Commit 935a4783 authored by Junio C Hamano's avatar Junio C Hamano

Merge branch 'da/difftool-dir-diff-fix' into maint

"git difftool --dir-diff" had a minor regression when started from
a subdirectory, which has been fixed.

* da/difftool-dir-diff-fix:
  difftool: fix dir-diff index creation when in a subdirectory
parents 28c8a447 853e10c1
......@@ -182,6 +182,10 @@ sub setup_dir_diff
}
}
# Go to the root of the worktree so that the left index files
# are properly setup -- the index is toplevel-relative.
chdir($workdir);
# Setup temp directories
my $tmpdir = tempdir('git-difftool.XXXXX', CLEANUP => 0, TMPDIR => 1);
my $ldir = "$tmpdir/left";
......
......@@ -374,6 +374,7 @@ test_expect_success PERL 'setup change in subdirectory' '
echo master >sub/sub &&
git add sub/sub &&
git commit -m "added sub/sub" &&
git tag v1 &&
echo test >>file &&
echo test >>sub/sub &&
git add file sub/sub &&
......@@ -409,12 +410,49 @@ run_dir_diff_test 'difftool --dir-diff ignores --prompt' '
grep file output
'
run_dir_diff_test 'difftool --dir-diff from subdirectory' '
run_dir_diff_test 'difftool --dir-diff branch from subdirectory' '
(
cd sub &&
git difftool --dir-diff $symlinks --extcmd ls branch >output &&
grep sub output &&
grep file output
# "sub" must only exist in "right"
# "file" and "file2" must be listed in both "left" and "right"
test "1" = $(grep sub output | wc -l) &&
test "2" = $(grep file"$" output | wc -l) &&
test "2" = $(grep file2 output | wc -l)
)
'
run_dir_diff_test 'difftool --dir-diff v1 from subdirectory' '
(
cd sub &&
git difftool --dir-diff $symlinks --extcmd ls v1 >output &&
# "sub" and "file" exist in both v1 and HEAD.
# "file2" is unchanged.
test "2" = $(grep sub output | wc -l) &&
test "2" = $(grep file output | wc -l) &&
test "0" = $(grep file2 output | wc -l)
)
'
run_dir_diff_test 'difftool --dir-diff branch from subdirectory w/ pathspec' '
(
cd sub &&
git difftool --dir-diff $symlinks --extcmd ls branch -- .>output &&
# "sub" only exists in "right"
# "file" and "file2" must not be listed
test "1" = $(grep sub output | wc -l) &&
test "0" = $(grep file output | wc -l)
)
'
run_dir_diff_test 'difftool --dir-diff v1 from subdirectory w/ pathspec' '
(
cd sub &&
git difftool --dir-diff $symlinks --extcmd ls v1 -- .>output &&
# "sub" exists in v1 and HEAD
# "file" is filtered out by the pathspec
test "2" = $(grep sub output | wc -l) &&
test "0" = $(grep file output | wc -l)
)
'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment