From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Chris Torek <chris.torek@gmail.com>
Subject: [PATCH v2 0/7] making log --first-parent imply -m
Date: Wed, 29 Jul 2020 16:10:02 -0400 [thread overview]
Message-ID: <20200729201002.GA2989059@coredump.intra.peff.net> (raw)
In-Reply-To: <20200728163617.GA2649887@coredump.intra.peff.net>
On Tue, Jul 28, 2020 at 12:36:18PM -0400, Jeff King wrote:
> This series just makes --first-parent imply -m. That doesn't change any
> output by itself, but does mean that diff options like "-p", "-S", etc,
> behave sensibly.
Here's a re-roll taking into account the discussion so far:
- the escape hatch option name is flipped to "--no-diff-merges" (with
"--diff-merges" matching "-m")
- the documentation now discusses the change as well as the existing
handling of merges; this involved a few extra cleanups. Try
"doc-diff" for a better view of the actual rendered changes.
I do think longer term we'd be better off to stop having this maze
of ifdef'd inclusions, and just have gitdiff(7) which covers all of
the possibilities in human-readable text (so yes, you might see a
mention of diff-files while you're looking for info on git-log, but
that would also broaden your mind about how the different commands
work). But that's clearly outside the scope of this series. I think
what's here is a strict improvement.
Patches:
[1/7]: log: drop "--cc implies -m" logic
[2/7]: revision: add "--no-diff-merges" option to counteract "-m"
[3/7]: log: enable "-m" automatically with "--first-parent"
[4/7]: doc/git-log: move "Diff Formatting" from rev-list-options
[5/7]: doc/git-log: drop "-r" diff option
[6/7]: doc/git-log: move "-t" into diff-options list
[7/7]: doc/git-log: clarify handling of merge commit diffs
Documentation/diff-options.txt | 5 ++
Documentation/git-log.txt | 43 +++++++++-
Documentation/rev-list-options.txt | 45 -----------
builtin/log.c | 7 +-
revision.c | 10 ++-
revision.h | 2 +-
t/t4013-diff-various.sh | 1 +
..._--no-diff-merges_-p_--first-parent_master | 78 +++++++++++++++++++
t/t4013/diff.log_-p_--first-parent_master | 22 ++++++
9 files changed, 158 insertions(+), 55 deletions(-)
create mode 100644 t/t4013/diff.log_--no-diff-merges_-p_--first-parent_master
Range diff from v1:
1: 518deab41f = 1: 4277d82c0c log: drop "--cc implies -m" logic
2: 836553f54e ! 2: 78750f9054 revision: add "--ignore-merges" option to counteract "-m"
@@ Metadata
Author: Jeff King <peff@peff.net>
## Commit message ##
- revision: add "--ignore-merges" option to counteract "-m"
+ revision: add "--no-diff-merges" option to counteract "-m"
The "-m" option sets revs->ignore_merges to "0", but there's no way to
undo it. This probably isn't something anybody overly cares about, since
@@ Commit message
functions, as well as setup_revisions() itself, avoid clobbering the
user's preference (which until now they couldn't actually express).
- - since we now have --ignore-merges, let's add the matching
- --no-ignore-merges, which is just a synonym for "-m". In fact, it's
- simpler to just document --no-ignore-merges alongside "-m", and
- leave it implied that its opposite countermands it.
+ - since we now have --no-diff-merges, let's add the matching
+ --diff-merges, which is just a synonym for "-m". Then we don't even
+ need to document --no-diff-merges separately; it countermands the
+ long form of "-m" in the usual way.
The new test shows that this behaves just the same as the current
behavior without "-m".
@@ Documentation/rev-list-options.txt: options may be given. See linkgit:git-diff-f
rename or copy detection have been requested).
-m::
-+--no-ignore-merges::
++--diff-merges::
This flag makes the merge commits show the full diff like
regular commits; for each merge parent, a separate log entry
and diff is generated. An exception is that only diff against
@@ revision.c: static int handle_revision_opt(struct rev_info *revs, int argc, cons
revs->diffopt.flags.recursive = 1;
revs->diffopt.flags.tree_in_recursive = 1;
- } else if (!strcmp(arg, "-m")) {
-+ } else if (!strcmp(arg, "-m") || !strcmp(arg, "--no-ignore-merges")) {
++ } else if (!strcmp(arg, "-m") || !strcmp(arg, "--diff-merges")) {
revs->ignore_merges = 0;
-+ } else if (!strcmp(arg, "--ignore-merges")) {
++ } else if (!strcmp(arg, "--no-diff-merges")) {
+ revs->ignore_merges = 1;
} else if (!strcmp(arg, "-c")) {
revs->diff = 1;
@@ t/t4013-diff-various.sh: log --root --patch-with-stat --summary master
log --root -c --patch-with-stat --summary master
# improved by Timo's patch
log --root --cc --patch-with-stat --summary master
-+log --ignore-merges -p --first-parent master
++log --no-diff-merges -p --first-parent master
log -p --first-parent master
log -m -p --first-parent master
log -m -p master
- ## t/t4013/diff.log_--ignore-merges_-p_--first-parent_master (new) ##
+ ## t/t4013/diff.log_--no-diff-merges_-p_--first-parent_master (new) ##
@@
-+$ git log --ignore-merges -p --first-parent master
++$ git log --no-diff-merges -p --first-parent master
+commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
+Merge: 9a6d494 c7a2ab9
+Author: A U Thor <author@example.com>
3: 3381fefeeb ! 3: 512b230003 log: enable "-m" automatically with "--first-parent"
@@ Commit message
No new test is needed; we'll tweak the output of the existing
"--first-parent -p" test, which now matches the "-m --first-parent -p"
- test. The unchanged existing test for "--ignore-merges" confirms that
+ test. The unchanged existing test for "--no-diff-merges" confirms that
the user can get the old behavior if they want.
## builtin/log.c ##
-: ---------- > 4: 2310dd62a6 doc/git-log: move "Diff Formatting" from rev-list-options
-: ---------- > 5: 7a9a6b2d94 doc/git-log: drop "-r" diff option
-: ---------- > 6: e369e0ac50 doc/git-log: move "-t" into diff-options list
-: ---------- > 7: c1e769448c doc/git-log: clarify handling of merge commit diffs
next prev parent reply other threads:[~2020-07-29 20:10 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-28 16:36 [PATCH 0/3] making --first-parent imply -m Jeff King
2020-07-28 16:36 ` [PATCH 1/3] log: drop "--cc implies -m" logic Jeff King
2020-07-28 16:38 ` [PATCH 2/3] revision: add "--ignore-merges" option to counteract "-m" Jeff King
2020-07-28 17:52 ` Chris Torek
2020-07-29 18:42 ` Jeff King
2020-07-28 21:01 ` Junio C Hamano
2020-07-29 18:22 ` Jeff King
2020-07-29 18:30 ` Jeff King
2020-07-29 18:53 ` Junio C Hamano
2020-07-28 16:39 ` [PATCH 3/3] log: enable "-m" automatically with "--first-parent" Jeff King
2020-07-28 16:47 ` [PATCH 0/3] making --first-parent imply -m Jeff King
2020-07-28 16:48 ` Junio C Hamano
2020-07-28 16:53 ` Jeff King
2020-07-28 16:55 ` Taylor Blau
2020-07-29 20:10 ` Jeff King [this message]
2020-07-29 20:10 ` [PATCH v2 1/7] log: drop "--cc implies -m" logic Jeff King
2020-07-29 20:10 ` [PATCH v2 2/7] revision: add "--no-diff-merges" option to counteract "-m" Jeff King
2020-07-29 20:10 ` [PATCH v2 3/7] log: enable "-m" automatically with "--first-parent" Jeff King
2020-07-29 20:28 ` Junio C Hamano
2020-07-29 20:11 ` [PATCH v2 4/7] doc/git-log: move "Diff Formatting" from rev-list-options Jeff King
2020-07-29 20:56 ` Junio C Hamano
2020-07-29 21:02 ` Jeff King
2020-07-29 20:11 ` [PATCH v2 5/7] doc/git-log: drop "-r" diff option Jeff King
2020-07-29 20:12 ` [PATCH v2 6/7] doc/git-log: move "-t" into diff-options list Jeff King
2020-07-29 21:10 ` Junio C Hamano
2020-07-29 21:55 ` Jeff King
2020-07-29 20:12 ` [PATCH v2 7/7] doc/git-log: clarify handling of merge commit diffs Jeff King
2020-07-29 21:03 ` [PATCH v2 0/7] making log --first-parent imply -m Chris Torek
2020-07-29 21:41 ` Sergey Organov
2020-07-31 23:08 ` Jeff King
2020-08-02 12:59 ` Sergey Organov
2020-08-02 17:35 ` Junio C Hamano
2020-08-03 15:47 ` Sergey Organov
2020-08-03 16:35 ` Junio C Hamano
2020-08-03 16:41 ` Sergey Organov
2020-08-03 17:21 ` Junio C Hamano
2020-08-03 20:25 ` Sergey Organov
2020-08-03 20:58 ` Jeff King
2020-08-03 21:16 ` Sergey Organov
2020-08-03 18:08 ` Jeff King
2020-08-03 20:00 ` Sergey Organov
2020-08-03 20:55 ` Jeff King
2020-08-03 21:18 ` Sergey Organov
2020-08-04 17:50 ` Sergey Organov
2020-08-04 19:42 ` Junio C Hamano
2020-08-04 20:00 ` Jeff King
2020-08-04 20:55 ` Sergey Organov
2020-08-04 21:22 ` Jeff King
2020-08-04 21:55 ` Junio C Hamano
2020-08-04 22:06 ` Sergey Organov
2020-08-04 22:14 ` Jeff King
2020-08-04 22:49 ` Junio C Hamano
2020-08-07 8:26 ` Jeff King
2020-08-07 9:25 ` Sergey Organov
2020-08-07 17:43 ` Junio C Hamano
2020-08-07 17:52 ` Sergey Organov
2020-08-07 19:01 ` Junio C Hamano
2020-08-07 19:12 ` Sergey Organov
2020-08-07 19:20 ` Jeff King
2020-08-07 19:28 ` Sergey Organov
2020-08-07 19:46 ` Junio C Hamano
2020-08-07 20:29 ` Sergey Organov
2020-08-07 20:39 ` Junio C Hamano
2020-08-07 21:08 ` Sergey Organov
2020-08-07 21:54 ` Junio C Hamano
2020-08-07 23:07 ` Sergey Organov
2020-08-04 22:53 ` Sergey Organov
2020-08-04 21:21 ` Sergey Organov
2020-08-04 21:26 ` Jeff King
2020-08-04 19:58 ` Jeff King
2020-08-04 20:56 ` Sergey Organov
2020-08-04 21:25 ` Jeff King
2020-08-04 21:41 ` Sergey Organov
2020-08-04 22:07 ` Jeff King
2020-08-04 22:15 ` Sergey Organov
2020-08-04 21:27 ` Junio C Hamano
2020-08-04 21:44 ` Sergey Organov
2020-08-04 21:58 ` Sergey Organov
2020-08-04 22:08 ` Jeff King
2020-08-04 22:26 ` [PATCH] revision: fix die() message for "--unpacked=" Sergey Organov
2020-08-05 0:03 ` Junio C Hamano
2020-08-05 15:37 ` [PATCH v2 0/7] making log --first-parent imply -m Sergey Organov
2020-08-05 16:05 ` Junio C Hamano
2020-08-05 17:55 ` Sergey Organov
2020-08-05 19:24 ` Junio C Hamano
2020-08-05 20:27 ` Sergey Organov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200729201002.GA2989059@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=chris.torek@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).