path: root/diff.c
diff options
authorJunio C Hamano <>2005-09-10 19:42:32 (GMT)
committerJunio C Hamano <>2005-09-10 19:42:32 (GMT)
commit6bac10d89d0889118a3e747c9c9210fd437c140d (patch)
treead08af5231936eb82459b645f6b804b18d1a9d61 /diff.c
parentb779d5f009f8e12df13d650ad8a57e63068a9c82 (diff)
Fix copy marking from diffcore-rename.
When (A,B) ==> (B,C) rename-copy was detected, we incorrectly said that C was created by copying B. This is because we only check if the path of rename/copy source still exists in the resulting tree to see if the file is renamed out of existence. In this case, the new B is created by copying or renaming A, so the original B is lost and we should say C is a rename of B not a copy of B. Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'diff.c')
1 files changed, 3 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index 71696c5..f8e3cbf 100644
--- a/diff.c
+++ b/diff.c
@@ -955,7 +955,9 @@ static void diff_resolve_rename_copy(void)
/* See if there is some other filepair that
* copies from the same source as us. If so
- * we are a copy. Otherwise we are a rename.
+ * we are a copy. Otherwise we are either a
+ * copy if the path stays, or a rename if it
+ * does not, but we already handled "stays" case.
for (j = i + 1; j < q->nr; j++) {
pp = q->queue[j];