[PATCH] difftool: avoid symlinks when reusing worktree files
- From
David Aguilar <davvid@gmail.com>
- Date
- Oct 27, 2015, 21:24 UTC
- Message-ID
- <1445981088-6285-1-git-send-email-davvid@gmail.com>
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 <gitster@pobox.com> Signed-off-by: David Aguilar <davvid@gmail.com> --- 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