1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-31 14:27:54 +01:00

Merge branch 'ks/difftool-dir-diff-copy-fix'

"difftool --dir-diff" did not copy back changes made by the
end-user in the diff tool backend to the working tree in some
cases.

* ks/difftool-dir-diff-copy-fix:
  difftool --dir-diff: allow changing any clean working tree file
This commit is contained in:
Junio C Hamano 2013-06-06 12:18:47 -07:00
commit 2fc0c022e6
2 changed files with 21 additions and 7 deletions

View file

@ -85,13 +85,9 @@ sub exit_cleanup
sub use_wt_file
{
my ($repo, $workdir, $file, $sha1, $symlinks) = @_;
my ($repo, $workdir, $file, $sha1) = @_;
my $null_sha1 = '0' x 40;
if ($sha1 ne $null_sha1 and not $symlinks) {
return 0;
}
if (! -e "$workdir/$file") {
# If the file doesn't exist in the working tree, we cannot
# use it.
@ -213,8 +209,7 @@ sub setup_dir_diff
if ($rmode ne $null_mode) {
my ($use, $wt_sha1) = use_wt_file($repo, $workdir,
$dst_path, $rsha1,
$symlinks);
$dst_path, $rsha1);
if ($use) {
push @working_tree, $dst_path;
$wtindex .= "$rmode $wt_sha1\t$dst_path\0";

View file

@ -385,6 +385,25 @@ test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstage
test_cmp actual expect
'
write_script modify-right-file <<\EOF
echo "new content" >"$2/file"
EOF
run_dir_diff_test 'difftool --dir-diff syncs worktree with unstaged change' '
test_when_finished git reset --hard &&
echo "orig content" >file &&
git difftool -d $symlinks --extcmd "$(pwd)/modify-right-file" branch &&
echo "new content" >expect &&
test_cmp expect file
'
run_dir_diff_test 'difftool --dir-diff syncs worktree without unstaged change' '
test_when_finished git reset --hard &&
git difftool -d $symlinks --extcmd "$(pwd)/modify-right-file" branch &&
echo "new content" >expect &&
test_cmp expect file
'
write_script modify-file <<\EOF
echo "new content" >file
EOF