summaryrefslogtreecommitdiff
path: root/t/t7800-difftool.sh
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2013-03-14 20:19:41 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-03-14 21:33:06 (GMT)
commit02c56314aab9474827cd7831518a970f0341e4fd (patch)
treecff228e8a5dbda54e75153ca7995a15386260529 /t/t7800-difftool.sh
parente0976dcf83884fd0b48e90f0c62f50852e6971f6 (diff)
downloadgit-02c56314aab9474827cd7831518a970f0341e4fd.zip
git-02c56314aab9474827cd7831518a970f0341e4fd.tar.gz
git-02c56314aab9474827cd7831518a970f0341e4fd.tar.bz2
difftool --dir-diff: symlink all files matching the working tree
Some users like to edit files in their diff tool when using "git difftool --dir-diff --symlink" to compare against the working tree but difftool currently only created symlinks when a file contains unstaged changes. Change this behaviour so that symlinks are created whenever the right-hand side of the comparison has the same SHA1 as the file in the working tree. Note that textconv filters are handled in the same way as by git-diff and if a clean filter is not the inverse of its smudge filter we already get a null SHA1 from "diff --raw" and will symlink the file without going through the new hash-object based check. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t7800-difftool.sh')
-rwxr-xr-xt/t7800-difftool.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index eb1d3f8..db3d3d6 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -370,6 +370,28 @@ test_expect_success PERL 'difftool --dir-diff' '
echo "$diff" | stdin_contains file
'
+write_script .git/CHECK_SYMLINKS <<\EOF
+for f in file file2 sub/sub
+do
+ echo "$f"
+ readlink "$2/$f"
+done >actual
+EOF
+
+test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
+ cat >expect <<-EOF &&
+ file
+ $(pwd)/file
+ file2
+ $(pwd)/file2
+ sub/sub
+ $(pwd)/sub/sub
+ EOF
+ git difftool --dir-diff --symlink \
+ --extcmd "./.git/CHECK_SYMLINKS" branch HEAD &&
+ test_cmp actual expect
+'
+
test_expect_success PERL 'difftool --dir-diff ignores --prompt' '
diff=$(git difftool --dir-diff --prompt --extcmd ls branch) &&
echo "$diff" | stdin_contains sub &&