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:
commit
2fc0c022e6
2 changed files with 21 additions and 7 deletions
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue