# git mergetool

4 messages from 2008-05-17 to 2008-05-17. Participants: Evgeny, Jakub Narebski, David Aguilar.
Thread: https://gitlist.dev/t/13556

## Evgeny, 2008-05-17 17:21

Subject: git mergetool
Message-ID: <b6840c770805171021g63df7d0dm4532655ed49209bc@mail.gmail.com>
URL: https://gitlist.dev/e/b6840c770805171021g63df7d0dm4532655ed49209bc%40mail.gmail.com

```
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, 2008-05-17 20:21

Subject: Re: git mergetool
Message-ID: <m3tzgw4r7w.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3tzgw4r7w.fsf%40localhost.localdomain
In-Reply-To: <b6840c770805171021g63df7d0dm4532655ed49209bc@mail.gmail.com>

```
Evgeny <evgeny.zislis@gmail.com> writes:

> 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, 2008-05-17 20:47

Subject: Re: git mergetool
Message-ID: <402731c90805171347g62197f5diab513e409d7cce25@mail.gmail.com>
URL: https://gitlist.dev/e/402731c90805171347g62197f5diab513e409d7cce25%40mail.gmail.com
In-Reply-To: <m3tzgw4r7w.fsf@localhost.localdomain>

```
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

```

## Evgeny, 2008-05-17 21:32

Subject: Re: git mergetool
Message-ID: <b6840c770805171432g7d1ea462y7ae09aff733eb6a9@mail.gmail.com>
URL: https://gitlist.dev/e/b6840c770805171432g7d1ea462y7ae09aff733eb6a9%40mail.gmail.com
In-Reply-To: <402731c90805171347g62197f5diab513e409d7cce25@mail.gmail.com>

```
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:
> 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
>

```
