diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-03-18 14:04:36 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-03-18 14:04:36 -0700 |
commit | 01e13d0221e73febdcb98e26b4ae2882887421d8 (patch) | |
tree | 42ef3c061af3cdd78fa78797b2fcec423611032c | |
parent | 4097a25429d09b61616845fbe6551587a30fa038 (diff) | |
parent | fcfec8bd9a9bf0a0f36ba4aed85f5768988aa946 (diff) | |
download | git-01e13d0221e73febdcb98e26b4ae2882887421d8.tar.gz git-01e13d0221e73febdcb98e26b4ae2882887421d8.tar.xz |
Merge branch 'da/difftool-git-files' into maint
"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
-rwxr-xr-x | git-difftool.perl | 18 | ||||
-rwxr-xr-x | t/t7800-difftool.sh | 14 |
2 files changed, 16 insertions, 16 deletions
diff --git a/git-difftool.perl b/git-difftool.perl index e57d3d129..18ca61e8d 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -39,24 +39,10 @@ USAGE sub find_worktree { - my ($repo) = @_; - # Git->repository->wc_path() does not honor changes to the working # tree location made by $ENV{GIT_WORK_TREE} or the 'core.worktree' # config variable. - my $worktree; - 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; + return Git::command_oneline('rev-parse', '--show-toplevel'); } sub print_tool_help @@ -418,7 +404,7 @@ sub dir_diff my $rc; my $error = 0; my $repo = Git->repository(); - my $workdir = find_worktree($repo); + my $workdir = find_worktree(); my ($a, $b, $tmpdir, @worktree) = setup_dir_diff($repo, $workdir, $symlinks); diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 241852848..5a193c500 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -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 |