Re: [PATCH v2 2/3] difftool: avoid double slashes in symlink targets
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 14, 2013, 21:19 UTC
- Message-ID
- <7va9q5y8zw.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <b10c6d19bd4004887868dd7626320bd676fee540.1363291949.git.john@keeping.me.uk>
John Keeping <john@keeping.me.uk> writes:
> When we add tests for symlinks in "git difftool --dir-diff" it's easier > to check the target path if we don't have to worry about double slashes > separating directories. Remove the trailing slash (if present) from > $workdir before creating the symlinks in order to avoid this.
Yup, and it is a good basic hygiene even without tests that expect the exact pathnames.
The code would work even when your $workdir is at the root of the filesystem; the patch looks good.
Thanks.
Show 20 quoted lines
> Signed-off-by: John Keeping <john@keeping.me.uk>
> ---
> git-difftool.perl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/git-difftool.perl b/git-difftool.perl
> index 12231fb..e594f9c 100755
> --- a/git-difftool.perl
> +++ b/git-difftool.perl
> @@ -209,7 +209,9 @@ EOF
> delete($ENV{GIT_INDEX_FILE});
>
> # Changes in the working tree need special treatment since they are
> - # not part of the index
> + # not part of the index. Remove any trailing slash from $workdir
> + # before starting to avoid double slashes in symlink targets.
> + $workdir =~ s|/$||;
> for my $file (@working_tree) {
> my $dir = dirname($file);
> unless (-d "$rdir/$dir") {