Junio C Hamano [off-list ref] writes:
Junio C Hamano [off-list ref] writes:
quoted
So obviously it would show the final paths and would not talk
about which different path from each parent contributed to the
result, but otherwise it should not be broken too much. At
least that was the way I intended..
Sorry, I am wrong again. That was the way how I planned to, but
I think I forgot to pass the diff-options from the caller to
diff_tree_combined_merge(), so it does not do renames/copies.
Shouldn't be too hard to change it though...
On top of your patch, it was quite easy ;-)
After the "Evil merge" in your test script, I added these:
for i in a b c d e f g h i j k l m n; do echo $i; done >d
git-update-index --add d
git commit -m 'Add d'
git checkout other
git merge fast HEAD master
mv d e
echo o >>e
git-update-index --add --remove d e
git commit -m 'Move-edit d to e'
git checkout master
git merge -s recursive 'Merge' HEAD other
git diff-tree -M --cc HEAD
diff --git a/combine-diff.c b/combine-diff.c
index 15f369e..2a0ec10 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -829,7 +829,7 @@ const char *diff_tree_combined_merge(con
struct combine_diff_path *p, *paths = NULL;
int num_parent, i, num_paths;
- diff_setup(&diffopts);
+ diffopts = *opt;
diffopts.output_format = DIFF_FORMAT_NO_OUTPUT;
diffopts.recursive = 1;