threads / discuss / 41805

Gitk "External diff" broken when using worktree

Subject: Gitk "External diff" broken when using worktree

## tl;dr

4 messages between Mar 24, 2016 and Mar 29, 2016.

replies: 3people: 2as markdown or json

Daryl Van Den Brink· Mar 24, 2016, 02:55 UTC · lore
Hi,

I'm using git 2.7.3 on cygwin, and have been taking advantage of the new "git worktree" feature. I noticed that when I launch gitk from one of the attached working directories, its "external diff" feature doesn't seem to work. Nothing shows up in the diff tool at all. However, it works if you launch gitk from the main repository.

To reproduce:
1. Create a new working tree with "git worktree add"
2. From that new worktree, launch gitk.
3. Right-click in a file in the bottom right pane and click "External diff"
4. No useful diff appears.
-- 
Daryl van den Brink
Duy Nguyen· Mar 24, 2016, 09:22 UTC · re: Daryl Van Den Brink · lore

Re: Gitk "External diff" broken when using worktree

On Thu, Mar 24, 2016 at 9:55 AM, Daryl Van Den Brink <daryl.vandenbrink@maptek.com.au> wrote:

Show 13 quoted lines
> Hi,
>
> I'm using git 2.7.3 on cygwin, and have been taking advantage of the
> new "git worktree" feature. I noticed that when I launch gitk from one
> of the attached working directories, its "external diff" feature
> doesn't seem to work. Nothing shows up in the diff tool at all.
> However, it works if you launch gitk from the main repository.
>
> To reproduce:
> 1. Create a new working tree with "git worktree add"
> 2. From that new worktree, launch gitk.
> 3. Right-click in a file in the bottom right pane and click "External diff"
> 4. No useful diff appears.

Works for me (on linux with 'master' branch). Maybe gitk selected invalid tempdir on cygwin. You can try replace your external diff program with a script or something that prints the whole command line. That should reveal if gitk given paths are correct or not (or if gitk fails even before that)

-- 
Duy
Daryl Van Den Brink· Mar 29, 2016, 00:17 UTC · re: Duy Nguyen · lore

Re: Gitk "External diff" broken when using worktree

I've done that, and here are the two arguments that it gives to the diff tool:
>From the main repository (in which case the it works):

.git/.gitk-tmp.CCxPmN/1/[1980e260494cbd225d482b5d962e77bdcdb2321c] RemoteTransaction.C .git/.gitk-tmp.CCxPmN/1/[2759bf6053e73cb5f7c11c646aee206242db2cd4] RemoteTransaction.C

>From the auxiliary worktree (when the diff doesn't work):

/home/daryl.vandenbrink/git-work/mdf_products/.git/worktrees/mdf2/.gitk-tmp.ZEdGpi/1/[1980e260494cbd225d482b5d962e77bdcdb2321c] RemoteTransaction.C /home/daryl.vandenbrink/git-work/mdf_products/.git/worktrees/mdf2/.gitk-tmp.ZEdGpi/1/[2759bf6053e73cb5f7c11c646aee206242db2cd4] RemoteTransaction.C

I hope that helps.
On 24 March 2016 at 19:52, Duy Nguyen <pclouds@gmail.com> wrote:
Show 23 quoted lines
> On Thu, Mar 24, 2016 at 9:55 AM, Daryl Van Den Brink
> <daryl.vandenbrink@maptek.com.au> wrote:
>> Hi,
>>
>> I'm using git 2.7.3 on cygwin, and have been taking advantage of the
>> new "git worktree" feature. I noticed that when I launch gitk from one
>> of the attached working directories, its "external diff" feature
>> doesn't seem to work. Nothing shows up in the diff tool at all.
>> However, it works if you launch gitk from the main repository.
>>
>> To reproduce:
>> 1. Create a new working tree with "git worktree add"
>> 2. From that new worktree, launch gitk.
>> 3. Right-click in a file in the bottom right pane and click "External diff"
>> 4. No useful diff appears.
>
> Works for me (on linux with 'master' branch). Maybe gitk selected
> invalid tempdir on cygwin. You can try replace your external diff
> program with a script or something that prints the whole command line.
> That should reveal if gitk given paths are correct or not (or if gitk
> fails even before that)
> --
> Duy
-- 
Daryl van den Brink
Software Engineer
Maptek | 31 Flemington Street, Glenside, SA 5065, Australia
Tel: +61-8 8338 9222 | Dir: +61-8 8338 9222 | Fax: +61-8 8338 9229
daryl.vandenbrink@maptek.com.au | www.maptek.com

Keep up to date with Maptek in our Forge newsletter.
Duy Nguyen· Mar 29, 2016, 09:40 UTC · re: Daryl Van Den Brink · lore

Re: Gitk "External diff" broken when using worktree

On Tue, Mar 29, 2016 at 7:17 AM, Daryl Van Den Brink <daryl.vandenbrink@maptek.com.au> wrote:

Show 17 quoted lines
> I've done that, and here are the two arguments that it gives to the diff tool:
>
> From the main repository (in which case the it works):
>
> .git/.gitk-tmp.CCxPmN/1/[1980e260494cbd225d482b5d962e77bdcdb2321c]
> RemoteTransaction.C
> .git/.gitk-tmp.CCxPmN/1/[2759bf6053e73cb5f7c11c646aee206242db2cd4]
> RemoteTransaction.C
>
> From the auxiliary worktree (when the diff doesn't work):
>
> /home/daryl.vandenbrink/git-work/mdf_products/.git/worktrees/mdf2/.gitk-tmp.ZEdGpi/1/[1980e260494cbd225d482b5d962e77bdcdb2321c]
> RemoteTransaction.C
> /home/daryl.vandenbrink/git-work/mdf_products/.git/worktrees/mdf2/.gitk-tmp.ZEdGpi/1/[2759bf6053e73cb5f7c11c646aee206242db2cd4]
> RemoteTransaction.C
>
> I hope that helps.

I can only guess that the content in those two files are the same. Which mean the bug is somewhere else. I'm afraid I can't help further because I'm not familiar with gitk (not even its user for that matter)

-- 
Duy

← back to recent threads