merge-recursive: improve auto-merging messages with path collisions

Each individual file involved in a rename could have also been modified on both sides of history, meaning it may need to have content merges. If two such files are renamed into the same location, then on top of the two natural auto-merging messages we also have to two-way merge the result, giving us messages that look like Auto-merging somefile.c (was somecase.c) Auto-merging somefile.c (was somefolder.c) Auto-merging somefile.c However, despite the fact that I was the one who put the "(was %s)" portions into the messages (and just a few months ago), I was still initially confused when running into a rename/rename(2to1) case and wondered if somefile.c had been merged three times. Update this to instead be: Auto-merging version of somefile.c from somecase.c Auto-merging version of somefile.c from someportfolio.c Auto-merging somefile.c This is an admittedly long set of messages for a single path, but you only get all three messages when dealing with the rare case of a rename/rename(2to1) conflict where both sides of both original files were also modified, in conflicting ways. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Elijah Newren committed Oct 16, 2018 at 13:19 UTC 2b168ef3ffa308537d858b9910170e4d314a8f4a
1 file changed +2 -2
merge-recursive.c
+2 -2
@@ -1674,8 +1674,8 @@ static int handle_rename_rename_2to1(struct merge_options *o,
1674 remove_file(o, 1, a->path, o->call_depth || would_lose_untracked(a->path));
1675 remove_file(o, 1, b->path, o->call_depth || would_lose_untracked(b->path));
1676
1677 - path_side_1_desc = xstrfmt("%s (was %s)", path, a->path);
1678 - path_side_2_desc = xstrfmt("%s (was %s)", path, b->path);
1677 + path_side_1_desc = xstrfmt("version of %s from %s", path, a->path);
1678 + path_side_2_desc = xstrfmt("version of %s from %s", path, b->path);
1679 if (merge_mode_and_contents(o, a, c1, &ci->ren1_other, path_side_1_desc,
1680 o->branch1, o->branch2, &mfi_c1) ||
1681 merge_mode_and_contents(o, b, &ci->ren2_other, c2, path_side_2_desc,