summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 52e9578)
raw | patch | inline | side by side (parent: 52e9578)
author | Junio C Hamano <junkio@cox.net> | |
Sat, 21 May 2005 09:42:35 +0000 (02:42 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sat, 21 May 2005 16:58:03 +0000 (09:58 -0700) |
This patch extends diff-cache and diff-files to report the
unmodified files to diff-core as well when -C (copy detection)
is in effect, so that the unmodified files can also be used as
the source candidates. The existing test t4003 has been
extended to cover this case.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
unmodified files to diff-core as well when -C (copy detection)
is in effect, so that the unmodified files can also be used as
the source candidates. The existing test t4003 has been
extended to cover this case.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff-cache.c | patch | blob | history | |
diff-files.c | patch | blob | history | |
t/t4003-diff-rename-1.sh | patch | blob | history |
diff --git a/diff-cache.c b/diff-cache.c
index a5deb8c7a4c66a21cf5e72681e0f5fd582f7a66d..b47b45a40d277a1211e56de0adfb6753ec34fb02 100644 (file)
--- a/diff-cache.c
+++ b/diff-cache.c
}
oldmode = old->ce_mode;
- if (mode == oldmode && !memcmp(sha1, old->sha1, 20))
+ if (mode == oldmode && !memcmp(sha1, old->sha1, 20) &&
+ detect_rename < 2)
return 0;
mode = ntohl(mode);
diff --git a/diff-files.c b/diff-files.c
index d3b80a07255511097fd0eebe94fc844f63d5e152..a3c523ff6feeae5d5200153012068ee05f91d836 100644 (file)
--- a/diff-files.c
+++ b/diff-files.c
continue;
}
changed = ce_match_stat(ce, &st);
- if (!changed)
+ if (!changed && detect_rename < 2)
continue;
oldmode = ntohl(ce->ce_mode);
index 20d8ac5f8b5997bc1d60a2681186479cbca53c6a..fc773897b72d3d2ebfb8614b6acfc65f8eea7cf2 100644 (file)
--- a/t/t4003-diff-rename-1.sh
+++ b/t/t4003-diff-rename-1.sh
rm -f COPYING &&
git-update-cache --add --remove COPYING COPYING.?'
+# tree has COPYING. work tree has COPYING.1 and COPYING.2,
+# both are slightly edited. So we say you copy-and-edit one,
+# and rename-and-edit the other.
+
GIT_DIFF_OPTS=-u0 git-diff-cache -M $tree |
sed -e 's/\([0-9][0-9]*\)/#/g' >current &&
cat >expected <<\EOF
test_expect_success \
'prepare work tree again' \
'mv COPYING.2 COPYING &&
- git-update-cache --add --remove COPYING COPYING.1'
+ git-update-cache --add --remove COPYING COPYING.1 COPYING.2'
+
+# tree has COPYING. work tree has COPYING and COPYING.1,
+# both are slightly edited. So we say you edited one,
+# and copy-and-edit the other.
GIT_DIFF_OPTS=-u0 git-diff-cache -C $tree |
sed -e 's/\([0-9][0-9]*\)/#/g' >current
+ This file is licensed under the G.P.L v#, or a later version
EOF
+test_expect_success \
+ 'validate output from rename/copy detection' \
+ 'diff -u current expected'
+
+test_expect_success \
+ 'prepare work tree once again' \
+ 'cat ../../COPYING >COPYING &&
+ git-update-cache --add --remove COPYING COPYING.1'
+
+# tree has COPYING. work tree has the same COPYING and COPYING.1,
+# but COPYING is not edited. We say you copy-and-edit COPYING.1;
+# this is only possible because -C mode now reports the unmodified
+# file to the diff-core.
+
+GIT_DIFF_OPTS=-u0 git-diff-cache -C $tree |
+sed -e 's/\([0-9][0-9]*\)/#/g' >current
+cat >expected <<\EOF
+diff --git a/COPYING b/COPYING.#
+similarity index #%
+copy from COPYING
+copy to COPYING.#
+--- a/COPYING
++++ b/COPYING.#
+@@ -# +# @@
+- HOWEVER, in order to allow a migration to GPLv# if that seems like
++ However, in order to allow a migration to GPLv# if that seems like
+EOF
+
test_expect_success \
'validate output from rename/copy detection' \
'diff -u current expected'