summaryrefslogtreecommitdiff
path: root/diff.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-09-10 12:42:32 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-10 12:42:32 -0700
commit6bac10d89d0889118a3e747c9c9210fd437c140d (patch)
treead08af5231936eb82459b645f6b804b18d1a9d61 /diff.c
parentb779d5f009f8e12df13d650ad8a57e63068a9c82 (diff)
downloadgit-6bac10d89d0889118a3e747c9c9210fd437c140d.tar.gz
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 <junkio@cox.net>
Diffstat (limited to 'diff.c')
-rw-r--r--diff.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index 71696c5eee..f8e3cbf1a6 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];