summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2008-10-26 00:46:21 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2008-10-26 14:09:48 -0700
commit2675773af893ae81f9b09f18c1f2ec86ca2158e7 (patch)
tree8f0fed7f4cbfb7f74804c574e698079899906fea
parentuserdiff: require explicitly allowing textconv (diff)
downloadtgif-2675773af893ae81f9b09f18c1f2ec86ca2158e7.tar.xz
only textconv regular files
We treat symlinks as text containing the results of the symlink, so it doesn't make much sense to text-convert them. Similarly gitlink components just end up as the text "Subproject commit $sha1", which we should leave intact. Note that a typechange may be broken into two parts: the removal of the old part and the addition of the new. In that case, we _do_ show the textconv for any part which is the addition or removal of a file we would ordinarily textconv, since it is purely acting on the file contents. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--diff.c2
-rwxr-xr-xt/t4030-diff-textconv.sh2
2 files changed, 3 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index 608223ab56..23d454e71d 100644
--- a/diff.c
+++ b/diff.c
@@ -1311,6 +1311,8 @@ static const char *get_textconv(struct diff_filespec *one)
{
if (!DIFF_FILE_VALID(one))
return NULL;
+ if (!S_ISREG(one->mode))
+ return NULL;
diff_filespec_load_driver(one);
return one->driver->textconv;
}
diff --git a/t/t4030-diff-textconv.sh b/t/t4030-diff-textconv.sh
index 1df48ae12a..3945731e9a 100755
--- a/t/t4030-diff-textconv.sh
+++ b/t/t4030-diff-textconv.sh
@@ -104,7 +104,7 @@ index ad8b3d2..67be421
\ No newline at end of file
EOF
# make a symlink the hard way that works on symlink-challenged file systems
-test_expect_failure 'textconv does not act on symlinks' '
+test_expect_success 'textconv does not act on symlinks' '
echo -n frotz > file &&
git add file &&
git ls-files -s | sed -e s/100644/120000/ |