difftool's dir-diff should never reuse a symlink, regardless of
what it points to. Tighten use_wt_file() so that it rejects all
symlinks.
Helped-by: Junio C Hamano [off-list ref]
Signed-off-by: David Aguilar <redacted>
---
git-difftool.perl | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/git-difftool.perl b/git-difftool.perl
index 1abe647..873db57 100755
--- a/git-difftool.perl
+++ b/git-difftool.perl
@@ -70,13 +70,13 @@ sub use_wt_file
my ($repo, $workdir, $file, $sha1) = @_;
my $null_sha1 = '0' x 40;
- if (! -f "$workdir/$file") {
- return (0, $null_sha1);
+ my $workfile = "$workdir/$file";
+ if (-f $workfile && ! -l $workfile) {
+ my $wt_sha1 = $repo->command_oneline('hash-object', $workfile);
+ my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1);
+ return ($use, $wt_sha1);
}
-
- my $wt_sha1 = $repo->command_oneline('hash-object', "$workdir/$file");
- my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1);
- return ($use, $wt_sha1);
+ return (0, $null_sha1);
}
sub changed_files--
2.6.2.282.gfefd36e