[PATCH 0/5] diff-merges: more features
- From
Sergey Organov <sorganov@gmail.com>
- Date
- Nov 27, 2022, 09:37 UTC
- Message-ID
- <20221127093721.31012-1-sorganov@gmail.com>
1. --diff-merges=[no]-hide
The set of diff-merges options happened to be incomplete, and failed to implement exact semantics of -m option that hides output of diffs for merge commits unless -p option is active as well.
The new "hide" option fixes this issue, so that now
--diff-merges=on --diff-merges=hide
combo is the exact synonym for -m.
The log.diffMerges configuration also accepts "hide" and "no-hide" values, and governs the default value for the hide bit. The configuration behaves as if "--diff-merges=[no-]hide" is inserted first in the command-line.
2. log.diffMerges-m-imply-p
Historically, '-m' doesn't imply '-p' whereas similar '-c' and '--cc' options do. Simply fixing this inconsistency by unconditional modification of '-m' semantics appeared to be a bad idea, as it broke some legacy scripts/aliases. This patch rather provides configuration variable to tweak '-m' behavior accordingly.
3. log.diffMergesForce
Force specific log format for -c, --cc, and --remerge-diff options instead of their respective formats. The override is useful when some external tool hard-codes diff for merges format option.
4. Support list of values for --diff-merges
This allows for shorter --diff-merges=on,hide forms.
5. Issue warning for lone '-m'.
Lone '-m' is in use by scripts/aliases that aim at enabling diff output for merge commits, but only if '-p' is then specified as well.
As '-m' may now be configured to imply '-p' (using 'log.diffMerges-m-imply-p'), issue warning if lone '-m' is specified, and suggest to instead use '--diff-merges=on,hide' that does not depend on user configuration.
This is expected to give a provision for enabling log.diffMerges-m-imply-p by default in the future.
Sergey Organov (5): diff-merges: implement [no-]hide option and log.diffMergesHide config diff-merges: implement log.diffMerges-m-imply-p config diff-merges: implement log.diffMergesForce config diff-merges: support list of values for --diff-merges diff-merges: issue warning on lone '-m' option
Documentation/config/log.txt | 20 ++++ Documentation/diff-options.txt | 20 +++- builtin/log.c | 6 + diff-merges.c | 108 +++++++++++++++--- diff-merges.h | 6 + t/t4013-diff-various.sh | 89 ++++++++++++++- ...ges=first-parent_--diff-merges=hide_master | 34 ++++++ t/t9902-completion.sh | 9 ++ 8 files changed, 272 insertions(+), 20 deletions(-) create mode 100644 t/t4013/diff.log_--diff-merges=first-parent_--diff-merges=hide_master
-- 2.37.3.526.g5f84746cb16b