threads / discuss / 13556

git mergetool

Subject: git mergetool

## tl;dr

4 messages between May 17, 2008 and May 17, 2008.

replies: 3people: 3as markdown or json

Evgeny· May 17, 2008, 17:21 UTC · lore

Hello Git developers, and especially Theodore (whos email is in the footer of man git-mergetool)

Background:
   I am trying to use a custom mergetool with git.
   P4Merge from http://www.perforce.com/perforce/products/merge.html
   The documentation explains that environment variables $BASE,
$LOCAL, $REMOTE, $MERGED
   are set for the invocation of the mergetool command.
Problem:
   I wrote a wrapper for P4Merge, and I check for these environment
variables - but they are not there.
   After a closer inspection of git-mergetool I see that infact these
variables are not being sent to the
   external command at all, and are just in the context of the
git-mergetool script.
Solution:
   There are two ways, that i know of, to make the executed command
receive these variables :
     1. use "export" on them
     2. use "env LOCAL=$LOCAL env REMOTE=$REMOTE ....  $extcommand" to
set an environment for just that command
My System Information:
   git 1.5.5.1  (from macports)
   Mac OS X 10.5.2

Hopefully this will get fixed in future versions, so I wont need to patch git-mergetool locally on my machine with every update.

Regards, Evgeny

Jakub Narebski· May 17, 2008, 20:21 UTC · re: Evgeny · lore

Re: git mergetool

Evgeny <evgeny.zislis@gmail.com> writes:
Show 14 quoted lines
> Background:
>    I am trying to use a custom mergetool with git.
>    P4Merge from http://www.perforce.com/perforce/products/merge.html
> 
>    The documentation explains that environment variables 
>    $BASE, $LOCAL, $REMOTE, $MERGED
>    are set for the invocation of the mergetool command.
> 
> Problem:
>    I wrote a wrapper for P4Merge, and I check for these environment
>    variables - but they are not there.   After a closer inspection
>    of git-mergetool I see that infact these variables are not being
>    sent to the external command at all, and are just in the context
>    of the git-mergetool script.
>From what I know of git-mergetool, you can use one of the predefined

merge tools: kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, and opendiff (optionally providing path to the tool)

To add support for P4Merge you would have either modify git-mergetool.sh (and, optionally, send a patch to git mailing list), or make use of `mergetool.<tool>.cmd` configuration option. Unfortunately there is no example...

-- 
Jakub Narebski
Poland
ShadeHawk on #git
David Aguilar· May 17, 2008, 20:47 UTC · re: Jakub Narebski · lore

Re: git mergetool

On Sat, May 17, 2008 at 1:21 PM, Jakub Narebski <jnareb@gmail.com> wrote:
Show 28 quoted lines
> Evgeny <evgeny.zislis@gmail.com> writes:
>
>> Background:
>>    I am trying to use a custom mergetool with git.
>>    The documentation explains that environment variables
>>    $BASE, $LOCAL, $REMOTE, $MERGED
>>    are set for the invocation of the mergetool command.
>>
>> Problem:
>>    I wrote a wrapper for P4Merge, and I check for these environment
>>    variables - but they are not there.   After a closer inspection
>>    of git-mergetool I see that infact these variables are not being
>>    sent to the external command at all, and are just in the context
>>    of the git-mergetool script.
>
> From what I know of git-mergetool, you can use one of the predefined
> merge tools: kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
> ecmerge, and opendiff (optionally providing path to the tool)
>
> To add support for P4Merge you would have either modify
> git-mergetool.sh (and, optionally, send a patch to git mailing list),
> or make use of `mergetool.<tool>.cmd` configuration option.
> Unfortunately there is no example...
>
> --
> Jakub Narebski
> Poland
> ShadeHawk on #git
I just sent a patch that exports these variables.

Presumably we do not want to modify git-mergetool.sh every single time someone needs to be able to use a new mergetool, hence the patch I sent makes sense to me. Let me know if you think otherwise. Thanks,

-- 
 David
Evgeny· May 17, 2008, 21:32 UTC · re: David Aguilar · lore

Re: git mergetool

I was in fact using mergetool.p4merge.cmd ... and the documentation explains regarding the non-working environment variables.

Hopefully with the new patch it will work okay.
Thanks David!

-- Evgeny

On Sat, May 17, 2008 at 11:47 PM, David Aguilar <davvid@gmail.com> wrote:
Show 39 quoted lines
> On Sat, May 17, 2008 at 1:21 PM, Jakub Narebski <jnareb@gmail.com> wrote:
>> Evgeny <evgeny.zislis@gmail.com> writes:
>>
>>> Background:
>>>    I am trying to use a custom mergetool with git.
>>>    The documentation explains that environment variables
>>>    $BASE, $LOCAL, $REMOTE, $MERGED
>>>    are set for the invocation of the mergetool command.
>>>
>>> Problem:
>>>    I wrote a wrapper for P4Merge, and I check for these environment
>>>    variables - but they are not there.   After a closer inspection
>>>    of git-mergetool I see that infact these variables are not being
>>>    sent to the external command at all, and are just in the context
>>>    of the git-mergetool script.
>>
>> From what I know of git-mergetool, you can use one of the predefined
>> merge tools: kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
>> ecmerge, and opendiff (optionally providing path to the tool)
>>
>> To add support for P4Merge you would have either modify
>> git-mergetool.sh (and, optionally, send a patch to git mailing list),
>> or make use of `mergetool.<tool>.cmd` configuration option.
>> Unfortunately there is no example...
>>
>> --
>> Jakub Narebski
>> Poland
>> ShadeHawk on #git
>
> I just sent a patch that exports these variables.
>
> Presumably we do not want to modify git-mergetool.sh every single time
> someone needs to be able to use a new mergetool, hence the patch I
> sent makes sense to me.  Let me know if you think otherwise.
> Thanks,
> --
>  David
>

← back to recent threads