{"thread":{"id":"40144","subject":"[PATCH 0/3] Showing merges easier with \"git log\"","startedAt":"2015-08-20T22:43:08Z","lastAt":"2015-08-21T21:40:22Z","messageCount":6,"participants":["Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"268392","messageId":"1440110591-12941-1-git-send-email-gitster@pobox.com","threadId":"40144","inReplyTo":null,"subject":"[PATCH 0/3] Showing merges easier with \"git log\"","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-20T22:43:08Z","receivedAt":"2015-08-20T22:43:08Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This is a combination of two closely related topics.\n\n - The second patch is my long-time pet peeve (it is even on the\n   leftover-bits list at git-blame blog).  When inspecting a branch,\n   I often type \"git log --first-parent --cc master..\", and then\n   realize that I need to give \"-p\" to actually view the condensed\n   patch.  We do the same for \"log -c\" (combined but not desified\n   form).\n\n - The third one is about \"git log --cc master..\", with which the\n   user is clearly telling us that s/he wants to see interesting\n   changes for both single-parent commits and for merges (otherwise\n   s/he wouldn't be saying \"--cc\" in the first place).  Even with\n   the second one that makes \"--cc\" imply \"-p\" unless another patch\n   output format (e.g. \"--raw\") was asked, you'd need \"-m\", which\n   was irritating.\n\nThe latter was inspired by a recent discussion, most notably\n\n   http://thread.gmane.org/gmane.comp.version-control.git/273937/focus=273988\n\nbut implements it with a much less UI impact.  Tweaking \"git log -p\"\nhas a lot of fallout---interested parties can try it out and how two\ntests in t4xxx series break.  Doing this for \"log --cc\" is\nconceptually cleaner, as \"-p\" does not tell us what the user wants\nto see for merges (nothing?  first-parent diff?  pairwise diff?\ncombined?), but \"--cc\" is a clear indication that dense combined\npatch is desired.\n\nNote that this conflicts with 'tr/remerge-diff' topic that has been\nstalled on 'pu' for quite some time.  I'll tentatively drop that\nother topic before pushing out today's integration result.  People\nwho are interested in that topic may want to help resurrect and\nreroll it.  Hint, hint...\n\nJunio C Hamano (3):\n  log: rename \"tweak\" helpers\n  log: when --cc is given, default to -p unless told otherwise\n  log: show merge commit when --cc is given\n\n builtin/log.c | 19 ++++++++++++++-----\n 1 file changed, 14 insertions(+), 5 deletions(-)\n\n-- \n2.5.0-546-gb1bbc0d\n"},{"id":"268395","messageId":"1440110591-12941-2-git-send-email-gitster@pobox.com","threadId":"40144","inReplyTo":"1440110591-12941-1-git-send-email-gitster@pobox.com","subject":"[PATCH 1/3] log: rename \"tweak\" helpers","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-20T22:43:09Z","receivedAt":"2015-08-20T22:43:09Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The revision walking API allows the callers to tweak its\nconfiguration at the last minute, immediately after all the revision\nand pathspec parameters are parsed from the command line but before\nthe default actions are decided based on them, by defining a \"tweak\"\ncallback function when calling setup_revisions().  Traditionally,\nthis facility was used by \"git show\" to turn on the patch output\n\"-p\" by default when no diff output option (e.g.  \"--raw\" or \"-s\" to\nsquelch the output altogether) is given on the command line, and\nfurther give dense combined diffs \"--cc\" for merge commits when no\noption to countermand it (e.g. \"-m\" to show pairwise patches).\n\nRecently, \"git log\" started using the same facility, but we named\nthe callback function \"default_follow_tweak()\", as if the only kind\nof tweaking we would want for \"git log\" will forever be limited to\nturning \"--follow\" on by default when told by a configuration\nvariable.  That was myopic.\n\nRename it to more generic name \"log_setup_revisions_tweak()\", and\nmatch the one used by show \"show_setup_revisions_tweak()\".\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/log.c | 11 ++++++-----\n 1 file changed, 6 insertions(+), 5 deletions(-)\n\ndiff --git a/builtin/log.c b/builtin/log.c\nindex b50ef75..8651105 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -504,7 +504,8 @@ static int show_tree_object(const unsigned char *sha1,\n \treturn 0;\n }\n \n-static void show_rev_tweak_rev(struct rev_info *rev, struct setup_revision_opt *opt)\n+static void show_setup_revisions_tweak(struct rev_info *rev,\n+\t\t\t\t       struct setup_revision_opt *opt)\n {\n \tif (rev->ignore_merges) {\n \t\t/* There was no \"-m\" on the command line */\n@@ -539,7 +540,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)\n \n \tmemset(&opt, 0, sizeof(opt));\n \topt.def = \"HEAD\";\n-\topt.tweak = show_rev_tweak_rev;\n+\topt.tweak = show_setup_revisions_tweak;\n \tcmd_log_init(argc, argv, prefix, &rev, &opt);\n \n \tif (!rev.no_walk)\n@@ -626,8 +627,8 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n \treturn cmd_log_walk(&rev);\n }\n \n-static void default_follow_tweak(struct rev_info *rev,\n-\t\t\t\t struct setup_revision_opt *opt)\n+static void log_setup_revisions_tweak(struct rev_info *rev,\n+\t\t\t\t      struct setup_revision_opt *opt)\n {\n \tif (DIFF_OPT_TST(&rev->diffopt, DEFAULT_FOLLOW_RENAMES) &&\n \t    rev->prune_data.nr == 1)\n@@ -647,7 +648,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)\n \tmemset(&opt, 0, sizeof(opt));\n \topt.def = \"HEAD\";\n \topt.revarg_opt = REVARG_COMMITTISH;\n-\topt.tweak = default_follow_tweak;\n+\topt.tweak = log_setup_revisions_tweak;\n \tcmd_log_init(argc, argv, prefix, &rev, &opt);\n \treturn cmd_log_walk(&rev);\n }\n-- \n2.5.0-546-gb1bbc0d\n"},{"id":"268393","messageId":"1440110591-12941-3-git-send-email-gitster@pobox.com","threadId":"40144","inReplyTo":"1440110591-12941-1-git-send-email-gitster@pobox.com","subject":"[PATCH 2/3] log: when --cc is given, default to -p unless told otherwise","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-20T22:43:10Z","receivedAt":"2015-08-20T22:43:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The \"--cc\" option to \"git log\" is clearly a request to show some\nsort of combined diff (be it --patch or --raw), but traditionally\nwe required the command line to explicitly ask for \"git log -p --cc\".\n\nTeach the command line parser to treat a lone \"--cc\" as if the user\nspecified \"-p --cc\".  Formats that do ask for other forms of diff\noutput, e.g. \"log --raw --cc\", are not overriden.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/log.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 8651105..e37c27a 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -633,6 +633,10 @@ static void log_setup_revisions_tweak(struct rev_info *rev,\n \tif (DIFF_OPT_TST(&rev->diffopt, DEFAULT_FOLLOW_RENAMES) &&\n \t    rev->prune_data.nr == 1)\n \t\tDIFF_OPT_SET(&rev->diffopt, FOLLOW_RENAMES);\n+\n+\t/* Turn --cc/-c into -p --cc/-c when -p was not given */\n+\tif (!rev->diffopt.output_format && rev->combine_merges)\n+\t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\n }\n \n int cmd_log(int argc, const char **argv, const char *prefix)\n-- \n2.5.0-546-gb1bbc0d\n"},{"id":"268394","messageId":"1440110591-12941-4-git-send-email-gitster@pobox.com","threadId":"40144","inReplyTo":"1440110591-12941-1-git-send-email-gitster@pobox.com","subject":"[PATCH 3/3] log: show merge commit when --cc is given","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-20T22:43:11Z","receivedAt":"2015-08-20T22:43:11Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"We defaulted to ignoring merge diffs because long long ago, in a\ngalaxy far away, we didn't have a great way to show the diffs.  The\nwhole \"--cc\" option goes back to January '06 and commit d8f4790e6fe7\n(\"diff-tree --cc: denser combined diff output for a merge commit\").\nAnd before that option - so for about 8 months - we had no good way\nto show the diffs of merges in a good dense way.  So the whole\n\"don't show diffs for merges by default\" actually made a lot of\nsense originally, because our merge diffs were not very useful.\n\nAnd this was carried forward to this day.  \"git log --cc\" still\nignores merge commits, and you need to say \"git log -m --cc\" to view\na sensible rendition of merge and non-merge commits, even with the\nprevious change to make \"--cc\" imply \"-p\".\n\nTeach \"git log\" that \"--cc\" means the user wants to see interesting\nchanges in merge commits by turning \"-m\" on.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/log.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/builtin/log.c b/builtin/log.c\nindex e37c27a..0cdd889 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -637,6 +637,10 @@ static void log_setup_revisions_tweak(struct rev_info *rev,\n \t/* Turn --cc/-c into -p --cc/-c when -p was not given */\n \tif (!rev->diffopt.output_format && rev->combine_merges)\n \t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\n+\n+\t/* Turn -m on when --cc/-c was given */\n+\tif (rev->combine_merges)\n+\t\trev->ignore_merges = 0;\n }\n \n int cmd_log(int argc, const char **argv, const char *prefix)\n-- \n2.5.0-546-gb1bbc0d\n"},{"id":"268441","messageId":"xmqqio885xjz.fsf@gitster.dls.corp.google.com","threadId":"40144","inReplyTo":"1440110591-12941-1-git-send-email-gitster@pobox.com","subject":"[PATCH 4/3] builtin/log.c: minor reformat","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-21T18:03:12Z","receivedAt":"2015-08-21T18:03:12Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Two logical lines that were not overly long was split in the middle,\nwhich made them read worse.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/log.c | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 0cdd889..a491d3d 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -342,8 +342,7 @@ static int cmd_log_walk(struct rev_info *rev)\n \t * retain that state information if replacing rev->diffopt in this loop\n \t */\n \twhile ((commit = get_revision(rev)) != NULL) {\n-\t\tif (!log_tree_commit(rev, commit) &&\n-\t\t    rev->max_count >= 0)\n+\t\tif (!log_tree_commit(rev, commit) && rev->max_count >= 0)\n \t\t\t/*\n \t\t\t * We decremented max_count in get_revision,\n \t\t\t * but we didn't actually show the commit.\n@@ -1464,8 +1463,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)\n \t\t\tcontinue;\n \t\t}\n \n-\t\tif (ignore_if_in_upstream &&\n-\t\t\t\thas_commit_patch_id(commit, &ids))\n+\t\tif (ignore_if_in_upstream && has_commit_patch_id(commit, &ids))\n \t\t\tcontinue;\n \n \t\tnr++;\n"},{"id":"268458","messageId":"xmqqr3mw48xl.fsf@gitster.dls.corp.google.com","threadId":"40144","inReplyTo":"1440110591-12941-1-git-send-email-gitster@pobox.com","subject":"[PATCH 3z/3] log: make '-p' imply '-m --cc'","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-08-21T21:40:22Z","receivedAt":"2015-08-21T21:40:22Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> The latter was inspired by a recent discussion, most notably\n>\n>    http://thread.gmane.org/gmane.comp.version-control.git/273937/focus=273988\n>\n> but implements it with a much less UI impact.  Tweaking \"git log -p\"\n> has a lot of fallout---interested parties can try it out and how two\n> tests in t4xxx series break.\n\nJust for the record, here is what I did before deciding that the\nidea of turning '-p' into '--cc -m' is not good and instead did the\n\"'--cc' should show the patch without '-p' and '-m'\" that is the\nreal [3/3].  The attached patch replaces 3/3, showss what happens if\nyou tweak 'log -p' to imply '-m --cc'\"; the change of behaviours is\nillustrated by the updated tests.\n\nMany are good-looking, and some others are questionable.\n\n * \"log -G<string> -p\" and \"log -S<string> -p\" that silently turns\n   \"-p\" into \"-m --cc\" shows merges that changed the occurrences of\n   <string>, but if the merge is a trivial textual merge, the change\n   itself is not seen (as we are doing \"--cc\").  This looks very\n   questionable.\n\n * Similarly, \"log -p --stat\" shows the diffstat against the first\n   parent for a merge but does not show the patch text, as \"--cc\" is\n   in effect, for a trivial textual merge.  This looks strange.\n\n * Even though I very much do like the fact that we see _something_\n   in the output for a merge commit, \"log --patch-with-stat\" that\n   outputs a \"patch\" that cannot be grokked by \"git apply\" feels\n   wrong.\n\nAll of the above led me to say \"when the user explicitly asks --cc,\nshow the merges that way, otherwise keeping the 'merges are by\ndefault ignored' is the right thing\".\n\n\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 519f170..1a77804 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -633,6 +633,14 @@ static void log_setup_revisions_tweak(struct rev_info *rev,\n \t    rev->prune_data.nr == 1)\n \t\tDIFF_OPT_SET(&rev->diffopt, FOLLOW_RENAMES);\n \n+\t/* Turn -p without -m to --cc -p -m */\n+\tif (rev->ignore_merges && !rev->combine_merges &&\n+\t    (rev->diffopt.output_format & DIFF_FORMAT_PATCH)) {\n+\t\trev->ignore_merges = 0;\n+\t\trev->combine_merges = 1;\n+\t\trev->dense_combined_merges = 1;\n+\t}\n+\n \t/* Turn --cc/-c into -p --cc/-c when -p was not given */\n \tif (!rev->diffopt.output_format && rev->combine_merges)\n \t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\ndiff --git a/t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_ b/t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_\nindex a18f147..04f4eee 100644\n--- a/t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_\n+++ b/t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_\n@@ -6,6 +6,23 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+ dir/sub | 2 ++\n+ 1 file changed, 2 insertions(+)\n+\n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_--patch-with-stat_master b/t/t4013/diff.log_--patch-with-stat_master\nindex ae425c4..ec4b1b9 100644\n--- a/t/t4013/diff.log_--patch-with-stat_master\n+++ b/t/t4013/diff.log_--patch-with-stat_master\n@@ -6,6 +6,38 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+ dir/sub | 2 ++\n+ file0   | 3 +++\n+ 2 files changed, 5 insertions(+)\n+\n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_--patch-with-stat_master_--_dir_ b/t/t4013/diff.log_--patch-with-stat_master_--_dir_\nindex d5207ca..d3be9a2 100644\n--- a/t/t4013/diff.log_--patch-with-stat_master_--_dir_\n+++ b/t/t4013/diff.log_--patch-with-stat_master_--_dir_\n@@ -6,6 +6,23 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+ dir/sub | 2 ++\n+ 1 file changed, 2 insertions(+)\n+\n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_--root_--patch-with-stat_--summary_master b/t/t4013/diff.log_--root_--patch-with-stat_--summary_master\nindex dffc09d..a6aa60a 100644\n--- a/t/t4013/diff.log_--root_--patch-with-stat_--summary_master\n+++ b/t/t4013/diff.log_--root_--patch-with-stat_--summary_master\n@@ -6,6 +6,38 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+ dir/sub | 2 ++\n+ file0   | 3 +++\n+ 2 files changed, 5 insertions(+)\n+\n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_--root_--patch-with-stat_master b/t/t4013/diff.log_--root_--patch-with-stat_master\nindex 55aa980..4d0ff3d 100644\n--- a/t/t4013/diff.log_--root_--patch-with-stat_master\n+++ b/t/t4013/diff.log_--root_--patch-with-stat_master\n@@ -6,6 +6,38 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+ dir/sub | 2 ++\n+ file0   | 3 +++\n+ 2 files changed, 5 insertions(+)\n+\n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_--root_-p_master b/t/t4013/diff.log_--root_-p_master\nindex b42c334..19dfc00 100644\n--- a/t/t4013/diff.log_--root_-p_master\n+++ b/t/t4013/diff.log_--root_-p_master\n@@ -6,6 +6,34 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4013/diff.log_-GF_-p_--pickaxe-all_master b/t/t4013/diff.log_-GF_-p_--pickaxe-all_master\nindex d36f880..4b6b93a 100644\n--- a/t/t4013/diff.log_-GF_-p_--pickaxe-all_master\n+++ b/t/t4013/diff.log_-GF_-p_--pickaxe-all_master\n@@ -1,4 +1,12 @@\n $ git log -GF -p --pickaxe-all master\n+commit 59d314ad6f356dd08601a4cd5e530381da3e3c64\n+Merge: 9a6d494 c7a2ab9\n+Author: A U Thor <author@example.com>\n+Date:   Mon Jun 26 00:04:00 2006 +0000\n+\n+    Merge branch 'side'\n+\n+\n commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:02:00 2006 +0000\ndiff --git a/t/t4013/diff.log_-GF_-p_master b/t/t4013/diff.log_-GF_-p_master\nindex 9d93f2c..a712a5a 100644\n--- a/t/t4013/diff.log_-GF_-p_master\n+++ b/t/t4013/diff.log_-GF_-p_master\n@@ -1,4 +1,12 @@\n $ git log -GF -p master\n+commit 59d314ad6f356dd08601a4cd5e530381da3e3c64\n+Merge: 9a6d494 c7a2ab9\n+Author: A U Thor <author@example.com>\n+Date:   Mon Jun 26 00:04:00 2006 +0000\n+\n+    Merge branch 'side'\n+\n+\n commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:02:00 2006 +0000\ndiff --git a/t/t4013/diff.log_-SF_-p_master b/t/t4013/diff.log_-SF_-p_master\nindex 5e32438..56c0d52 100644\n--- a/t/t4013/diff.log_-SF_-p_master\n+++ b/t/t4013/diff.log_-SF_-p_master\n@@ -1,4 +1,12 @@\n $ git log -SF -p master\n+commit 59d314ad6f356dd08601a4cd5e530381da3e3c64\n+Merge: 9a6d494 c7a2ab9\n+Author: A U Thor <author@example.com>\n+Date:   Mon Jun 26 00:04:00 2006 +0000\n+\n+    Merge branch 'side'\n+\n+\n commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:02:00 2006 +0000\ndiff --git a/t/t4013/diff.log_-p_--first-parent_master b/t/t4013/diff.log_-p_--first-parent_master\nindex 3fc896d..f5af0c6 100644\n--- a/t/t4013/diff.log_-p_--first-parent_master\n+++ b/t/t4013/diff.log_-p_--first-parent_master\n@@ -6,6 +6,34 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:02:00 2006 +0000\ndiff --git a/t/t4013/diff.log_-p_master b/t/t4013/diff.log_-p_master\nindex bf1326d..506947be 100644\n--- a/t/t4013/diff.log_-p_master\n+++ b/t/t4013/diff.log_-p_master\n@@ -6,6 +6,34 @@ Date:   Mon Jun 26 00:04:00 2006 +0000\n \n     Merge branch 'side'\n \n+diff --cc dir/sub\n+index cead32e,7289e35..992913c\n+--- a/dir/sub\n++++ b/dir/sub\n+@@@ -1,6 -1,4 +1,8 @@@\n+  A\n+  B\n+ +C\n+ +D\n+ +E\n+ +F\n++ 1\n++ 2\n+diff --cc file0\n+index b414108,f4615da..10a8a9f\n+--- a/file0\n++++ b/file0\n+@@@ -1,6 -1,6 +1,9 @@@\n+  1\n+  2\n+  3\n+ +4\n+ +5\n+ +6\n++ A\n++ B\n++ C\n+\n commit c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a\n Author: A U Thor <author@example.com>\n Date:   Mon Jun 26 00:03:00 2006 +0000\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 35d2d7c..e950092 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -570,6 +570,9 @@ cat >expect <<\\EOF\n | |\n | |     Merge HEADS DESCRIPTION\n | |\n+| |  reach.t | 1 +\n+| |  1 file changed, 1 insertion(+)\n+| |\n | * commit COMMIT_OBJECT_NAME\n | | Author: A U Thor <author@example.com>\n | |\n@@ -593,6 +596,10 @@ cat >expect <<\\EOF\n | | | |\n | | | |     Merge HEADS DESCRIPTION\n | | | |\n+| | | |  octopus-a.t | 1 +\n+| | | |  octopus-b.t | 1 +\n+| | | |  2 files changed, 2 insertions(+)\n+| | | |\n | | * | commit COMMIT_OBJECT_NAME\n | | |/  Author: A U Thor <author@example.com>\n | | |\n@@ -647,18 +654,30 @@ cat >expect <<\\EOF\n | |\n | |     Merge branch 'tangle'\n | |\n+| |  tangle-a | 1 +\n+| |  1 file changed, 1 insertion(+)\n+| |\n | *   commit COMMIT_OBJECT_NAME\n | |\\  Merge: MERGE_PARENTS\n | | | Author: A U Thor <author@example.com>\n | | |\n | | |     Merge branch 'side' (early part) into tangle\n | | |\n+| | |  1 | 1 +\n+| | |  1 file changed, 1 insertion(+)\n+| | |\n | * |   commit COMMIT_OBJECT_NAME\n | |\\ \\  Merge: MERGE_PARENTS\n | | | | Author: A U Thor <author@example.com>\n | | | |\n | | | |     Merge branch 'master' (early part) into tangle\n | | | |\n+| | | |  a/two | 1 +\n+| | | |  ein   | 1 +\n+| | | |  ichi  | 1 +\n+| | | |  one   | 1 -\n+| | | |  4 files changed, 3 insertions(+), 1 deletion(-)\n+| | | |\n | * | | commit COMMIT_OBJECT_NAME\n | | | | Author: A U Thor <author@example.com>\n | | | |\n@@ -681,6 +700,10 @@ cat >expect <<\\EOF\n | | | | |\n | | | | |     Merge branch 'side'\n | | | | |\n+| | | | |  1 | 1 +\n+| | | | |  2 | 1 +\n+| | | | |  2 files changed, 2 insertions(+)\n+| | | | |\n | * | | | commit COMMIT_OBJECT_NAME\n | | |_|/  Author: A U Thor <author@example.com>\n | |/| |\n"}]}