This new convenience option requests full diff with respect to first parent, so that git log --dd will output diff with respect to first parent for every commit, universally, no matter how many parents the commit turns out to have. Gives user quick and universal way to see what changes, exactly, were brought to a branch by merges as well as by regular commits. '--dd' is implemented as pure synonym for "--diff-merges=first-parent --patch". The first commit in the series tweaks diff-merges documentation a bit, and is valuable by itself. It's put here as '--dd' implementation commit depends on it in its documentation part. Note: the need for this new convenience option mostly emerged from denial by the community of patches that modify '-m' behavior to imply '-p' as the rest of similar options (such as --cc) do. So, basically, '--dd' is what '-m' should have been to be more useful. Updates in v4: * Removed "(which see)" reference from documentation that caused confusion. * Removed explanation why it's --dd and not simply -d from commit message. * Refined --remerge-diff short description according to Junio and Elijah comments. * Added explanation of --dd purpose. * Fixed style and syntax of "on,m::" description. Updates in v3: * Option renamed from '-d' to '--dd' due to Junio overpowering request to keep short-and-sweet '-d' reserved for another (yet unspecified) use. * Added completion of '--dd' to git-completion.bash. Updates in v2: * Reordered documentation for diff-merges formats in accordance with Junio recommendation. * Removed clarification of surprising -m behavior due to controversy with Junio on how exactly it should look like. Sergey Organov (3): diff-merges: improve --diff-merges documentation diff-merges: introduce '--dd' option completion: complete '--dd' Documentation/diff-options.txt | 105 ++++++++++++++----------- Documentation/git-log.txt | 4 +- contrib/completion/git-completion.bash | 2 +- diff-merges.c | 3 + t/t4013-diff-various.sh | 8 ++ 5 files changed, 73 insertions(+), 49 deletions(-) Interdiff against v3: diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index f80d493dd4c8..23f95e6172b9 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -45,7 +45,7 @@ endif::git-format-patch[] ifdef::git-log[] -m:: Show diffs for merge commits in the default format. This is - similar to '--diff-merges=on' (which see) except `-m` will + similar to '--diff-merges=on', except `-m` will produce no output unless `-p` is given as well. -c:: @@ -62,7 +62,7 @@ ifdef::git-log[] Shortcut for '--diff-merges=first-parent -p'. --remerge-diff:: - Produce diff against re-merge. + Produce remerge-diff output for merge commits. Shortcut for '--diff-merges=remerge -p'. --no-diff-merges:: @@ -83,7 +83,7 @@ off, none:: on, m:: Make diff output for merge commits to be shown in the default format. The default format could be changed using - `log.diffMerges` configuration parameter, which default value + `log.diffMerges` configuration variable, whose default value is `separate`. + first-parent, 1:: -- 2.25.1