diff options
author | John Keeping <john@keeping.me.uk> | 2013-03-14 20:19:41 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-03-14 14:33:06 -0700 |
commit | 02c56314aab9474827cd7831518a970f0341e4fd (patch) | |
tree | cff228e8a5dbda54e75153ca7995a15386260529 /t/t7800-difftool.sh | |
parent | e0976dcf83884fd0b48e90f0c62f50852e6971f6 (diff) | |
download | git-02c56314aab9474827cd7831518a970f0341e4fd.tar.gz |
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-x | t/t7800-difftool.sh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index eb1d3f85b5..db3d3d6bd1 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 && |