Merge branch 'da/difftool-git-files'
"git difftool" misbehaved when the repository is bound to the working tree with the ".git file" mechanism, where a textual file ".git" tells us where it is. * da/difftool-git-files: t7800: add a difftool test for .git-files difftool: support repositories with .git-files
This commit is contained in:
@ -39,24 +39,10 @@ USAGE
|
|||||||
|
|
||||||
sub find_worktree
|
sub find_worktree
|
||||||
{
|
{
|
||||||
my ($repo) = @_;
|
|
||||||
|
|
||||||
# Git->repository->wc_path() does not honor changes to the working
|
# Git->repository->wc_path() does not honor changes to the working
|
||||||
# tree location made by $ENV{GIT_WORK_TREE} or the 'core.worktree'
|
# tree location made by $ENV{GIT_WORK_TREE} or the 'core.worktree'
|
||||||
# config variable.
|
# config variable.
|
||||||
my $worktree;
|
return Git::command_oneline('rev-parse', '--show-toplevel');
|
||||||
my $env_worktree = $ENV{GIT_WORK_TREE};
|
|
||||||
my $core_worktree = Git::config('core.worktree');
|
|
||||||
|
|
||||||
if (defined($env_worktree) and (length($env_worktree) > 0)) {
|
|
||||||
$worktree = $env_worktree;
|
|
||||||
} elsif (defined($core_worktree) and (length($core_worktree) > 0)) {
|
|
||||||
$worktree = $core_worktree;
|
|
||||||
} else {
|
|
||||||
$worktree = $repo->wc_path();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $worktree;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub print_tool_help
|
sub print_tool_help
|
||||||
@ -418,7 +404,7 @@ sub dir_diff
|
|||||||
my $rc;
|
my $rc;
|
||||||
my $error = 0;
|
my $error = 0;
|
||||||
my $repo = Git->repository();
|
my $repo = Git->repository();
|
||||||
my $workdir = find_worktree($repo);
|
my $workdir = find_worktree();
|
||||||
my ($a, $b, $tmpdir, @worktree) =
|
my ($a, $b, $tmpdir, @worktree) =
|
||||||
setup_dir_diff($repo, $workdir, $symlinks);
|
setup_dir_diff($repo, $workdir, $symlinks);
|
||||||
|
|
||||||
|
@ -434,4 +434,18 @@ test_expect_success PERL 'difftool --no-symlinks detects conflict ' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'difftool properly honors gitlink and core.worktree' '
|
||||||
|
git submodule add ./. submod/ule &&
|
||||||
|
(
|
||||||
|
cd submod/ule &&
|
||||||
|
test_config diff.tool checktrees &&
|
||||||
|
test_config difftool.checktrees.cmd '\''
|
||||||
|
test -d "$LOCAL" && test -d "$REMOTE" && echo good
|
||||||
|
'\'' &&
|
||||||
|
echo good >expect &&
|
||||||
|
git difftool --tool=checktrees --dir-diff HEAD~ >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Reference in New Issue
Block a user