threads / discuss / 42153

using git-difftool -d when cherry-picking

Subject: using git-difftool -d when cherry-picking

## tl;dr

3 messages between Apr 27, 2016 and Apr 30, 2016.

replies: 2people: 2as markdown or json

Jan Smets· Apr 27, 2016, 09:12 UTC · lore
Hi
Please consider following example

#!/bin/bash rm -rf /tmp/gittest mkdir /tmp/gittest cd /tmp/gittest

git init

echo $RANDOM > testfile git add testfile git commit -m test -a

git branch X git checkout X echo $RANDOM > testfile git add testfile git commit -m test -a

git checkout master echo $RANDOM > testfile git add testfile git commit -m test -a

git cherry-pick X git diff --raw git difftool -d

This emulates a merge conflict when using git-cerry-pick.

$ git diff --raw :000000 100644 0000000... 0000000... U testfile :100644 100644 a04e026... 0000000... M testfile

When executing git difftool with the -d option :
/usr/lib/git-core/git-difftool line 260: File exists
A possible solution is to build an unique list in @working_tree
The purpose is to edit/resolve the conflict in the difftool.
Thanks!
-- 
Smets Jan
jan@smets.cx
David Aguilar· Apr 30, 2016, 01:19 UTC · re: Jan Smets · lore

Re: using git-difftool -d when cherry-picking

On Wed, Apr 27, 2016 at 11:12:25AM +0200, Jan Smets wrote:
Show 44 quoted lines
> Hi
> 
> Please consider following example
> 
> #!/bin/bash
> rm -rf /tmp/gittest
> mkdir /tmp/gittest
> cd /tmp/gittest
> 
> git init
> 
> echo $RANDOM > testfile
> git add testfile
> git commit -m test -a
> 
> git branch X
> git checkout X
> echo $RANDOM > testfile
> git add testfile
> git commit -m test -a
> 
> git checkout master
> echo $RANDOM > testfile
> git add testfile
> git commit -m test -a
> 
> git cherry-pick X
> git diff --raw
> git difftool -d
> 
> 
> This emulates a merge conflict when using git-cerry-pick.
> 
> $ git diff --raw
> :000000 100644 0000000... 0000000... U  testfile
> :100644 100644 a04e026... 0000000... M  testfile
> 
> When executing git difftool with the -d option :
> 
> /usr/lib/git-core/git-difftool line 260: File exists
> 
> A possible solution is to build an unique list in @working_tree
> 
> The purpose is to edit/resolve the conflict in the difftool.

That could be useful. git-mergetool is intended to be used when merge conflicts exist, but it sounds like you may have already found a possible solution by making @working_tree unique. Have you tested that to see if it skirts around the issue?

If you have a patch I'd be happy to help review and test it.
-- 
David
Jan Smets· Apr 30, 2016, 10:50 UTC · re: David Aguilar · lore

Re: using git-difftool -d when cherry-picking

On Sat, Apr 30, 2016 at 3:19 AM, David Aguilar <davvid@gmail.com> wrote:
Show 53 quoted lines
> On Wed, Apr 27, 2016 at 11:12:25AM +0200, Jan Smets wrote:
>> Hi
>>
>> Please consider following example
>>
>> #!/bin/bash
>> rm -rf /tmp/gittest
>> mkdir /tmp/gittest
>> cd /tmp/gittest
>>
>> git init
>>
>> echo $RANDOM > testfile
>> git add testfile
>> git commit -m test -a
>>
>> git branch X
>> git checkout X
>> echo $RANDOM > testfile
>> git add testfile
>> git commit -m test -a
>>
>> git checkout master
>> echo $RANDOM > testfile
>> git add testfile
>> git commit -m test -a
>>
>> git cherry-pick X
>> git diff --raw
>> git difftool -d
>>
>>
>> This emulates a merge conflict when using git-cerry-pick.
>>
>> $ git diff --raw
>> :000000 100644 0000000... 0000000... U  testfile
>> :100644 100644 a04e026... 0000000... M  testfile
>>
>> When executing git difftool with the -d option :
>>
>> /usr/lib/git-core/git-difftool line 260: File exists
>>
>> A possible solution is to build an unique list in @working_tree
>>
>> The purpose is to edit/resolve the conflict in the difftool.
>
>
> That could be useful.  git-mergetool is intended to be used when
> merge conflicts exist, but it sounds like you may have already
> found a possible solution by making @working_tree unique.  Have
> you tested that to see if it skirts around the issue?
>
> If you have a patch I'd be happy to help review and test it.
Something like this seems to work.
26a27,32
Show 6 quoted lines
> sub uniq
> {
>         my %seen;
>         grep !$seen{$_}++, @_;
> }
>
251a258
>     my @unique_working_tree = uniq( @working_tree );

256c263 < for my $file (@working_tree) { ---

>     for my $file (@unique_working_tree) {
TMTOWTDI
Thanks !
-- 
Smets Jan
jan@smets.cx

← back to recent threads