Kenichi Saita <nitoyon@xxxxxxxxx> writes: > The temporary directory prepared by "difftool --dir-diff" to > show the result of a change can be modified by the user via > the tree diff program, and we try hard not to lose changes > to them after tree diff program returns to us. Thanks; will queue (unless there are other suggestions, in which case we can polish it further while it is on 'pu'). > > However, the set of files to be copied back is computed > differently between --symlinks and --no-symlinks modes. The > former checks all paths that start out as identical to the > working tree file, while the latter checks paths that > already had a local modification in the working tree, > allowing changes made in the tree diff program to paths that > did not have any local change to be lost. > > Signed-off-by: Kenichi Saita <nitoyon@xxxxxxxxx> > --- > git-difftool.perl | 9 ++------- > t/t7800-difftool.sh | 19 +++++++++++++++++++ > 2 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/git-difftool.perl b/git-difftool.perl > index 8a75205..e57d3d1 100755 > --- a/git-difftool.perl > +++ b/git-difftool.perl > @@ -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 @@ EOF > > 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"; > diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh > index d46f041..2418528 100755 > --- a/t/t7800-difftool.sh > +++ b/t/t7800-difftool.sh > @@ -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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html