From 02c56314aab9474827cd7831518a970f0341e4fd Mon Sep 17 00:00:00 2001 From: John Keeping Date: Thu, 14 Mar 2013 20:19:41 +0000 Subject: 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 Signed-off-by: Junio C Hamano --- t/t7800-difftool.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 't/t7800-difftool.sh') diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index eb1d3f85b..db3d3d6bd 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 && -- cgit v1.2.1