This new convenience option requests full diff with respect to first parent, so that git log -d will output diff with respect to first parent for every commit, universally, no matter how many parents the commit turns out to have. It's 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 '-d' 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. 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 (2): diff-merges: improve --diff-merges documentation diff-merges: introduce '-d' option Documentation/diff-options.txt | 102 ++++++++++++++++++--------------- Documentation/git-log.txt | 4 +- diff-merges.c | 3 + t/t4013-diff-various.sh | 8 +++ 4 files changed, 70 insertions(+), 47 deletions(-) Interdiff against v1: diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index d773dafcb10a..19bb78ff6652 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -47,9 +47,6 @@ ifdef::git-log[] Show diffs for merge commits in the default format. This is similar to '--diff-merges=on' (which see) except `-m` will produce no output unless `-p` is given as well. -+ -Note: This option not implying `-p` is legacy feature that is -preserved for the sake of backward compatibility. -d:: Produce diff with respect to first parent. @@ -96,16 +93,6 @@ separate:: Show full diff with respect to each of parents. Separate log entry and diff is generated for each parent. + -remerge, r:: - Remerge two-parent merge commits to create a temporary tree - object--potentially containing files with conflict markers - and such. A diff is then shown between that temporary tree - and the actual merge commit. -+ -The output emitted when this option is used is subject to change, and -so is its interaction with other options (unless explicitly -documented). -+ combined, c:: Show differences from each of the parents to the merge result simultaneously instead of showing pairwise diff between @@ -117,6 +104,16 @@ dense-combined, cc:: by omitting uninteresting hunks whose contents in the parents have only two variants and the merge result picks one of them without modification. ++ +remerge, r:: + Remerge two-parent merge commits to create a temporary tree + object--potentially containing files with conflict markers + and such. A diff is then shown between that temporary tree + and the actual merge commit. ++ +The output emitted when this option is used is subject to change, and +so is its interaction with other options (unless explicitly +documented). -- --combined-all-paths:: -- 2.25.1