log: enable "-m" automatically with "--first-parent"

When using "--first-parent" to consider history as a single line of
commits, git-log still defaults to treating merges specially, even
though they could be considered as single commits in the linearized
history (that just introduce all of the changes from the second and
higher parents).

Let's instead have "--first-parent" imply "-m", which makes something
like:

  git log --first-parent -p

do what you'd expect. Likewise:

  git log --first-parent -Sfoo

will find "foo" in merge commits.

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 "--no-diff-merges" confirms that
the user can get the old behavior if they want.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2020-07-29 16:10:28 -04:00
committed by Junio C Hamano
parent 6fae74b418
commit 9ab89a2439
2 changed files with 25 additions and 0 deletions

View File

@ -731,6 +731,9 @@ static void log_setup_revisions_tweak(struct rev_info *rev,
/* Turn --cc/-c into -p --cc/-c when -p was not given */
if (!rev->diffopt.output_format && rev->combine_merges)
rev->diffopt.output_format = DIFF_FORMAT_PATCH;
if (rev->first_parent_only && rev->ignore_merges < 0)
rev->ignore_merges = 0;
}
int cmd_log(int argc, const char **argv, const char *prefix)