# [PATCH] mergetool-lib: make (g)vimdiff workable under Windows

4 messages from 2009-04-04 to 2009-04-05. Participants: Markus Heidelberg, Johannes Schindelin, Junio C Hamano.
Thread: https://gitlist.dev/t/18713

## Markus Heidelberg, 2009-04-04 13:17

Subject: [PATCH] mergetool-lib: make (g)vimdiff workable under Windows
Message-ID: <200904041517.55890.markus.heidelberg@web.de>
URL: https://gitlist.dev/e/200904041517.55890.markus.heidelberg%40web.de

```
Under Windows vimdiff and gvimdiff are not available as symbolic links,
but as batch files vimdiff.bat and gvimdiff.bat. These files weren't
found by 'type vimdiff' which led to the following error:

    The merge tool vimdiff is not available as 'vimdiff'

Even if they were found, it wouldn't work to invoke these batch files
from git-mergetool.

To solve this, use vim and gvim (vim.exe and gvim.exe) and pass the -d
command line switch over to them.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
---

This patch goes on top of the current difftool/mergetool patches from David.
This is 'da/difftool' in the current 'pu' and in addition:
[PATCH] mergetool-lib: refactor run_mergetool and check_unchanged
[PATCH] mergetool-lib: specialize opendiff options when in diff mode

 git-mergetool--lib.sh |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index b8566b2..6f0e8f7 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -11,6 +11,12 @@ get_merge_tool_path () {
 	path="$1"
 	if test -z "$2"; then
 		case "$1" in
+		vimdiff)
+			path=vim
+			;;
+		gvimdiff)
+			path=gvim
+			;;
 		emerge)
 			path=emacs
 			;;
@@ -142,19 +148,19 @@ run_mergetool () {
 	vimdiff)
 		if merge_mode; then
 			touch "$BACKUP"
-			"$merge_tool_path" -c "wincmd l" "$LOCAL" "$MERGED" "$REMOTE"
+			"$merge_tool_path" -d -c "wincmd l" "$LOCAL" "$MERGED" "$REMOTE"
 			check_unchanged
 		else
-			"$merge_tool_path" -c "wincmd l" "$LOCAL" "$REMOTE"
+			"$merge_tool_path" -d -c "wincmd l" "$LOCAL" "$REMOTE"
 		fi
 		;;
 	gvimdiff)
 		if merge_mode; then
 			touch "$BACKUP"
-			"$merge_tool_path" -c "wincmd l" -f "$LOCAL" "$MERGED" "$REMOTE"
+			"$merge_tool_path" -d -c "wincmd l" -f "$LOCAL" "$MERGED" "$REMOTE"
 			check_unchanged
 		else
-			"$merge_tool_path" -c "wincmd l" -f "$LOCAL" "$REMOTE"
+			"$merge_tool_path" -d -c "wincmd l" -f "$LOCAL" "$REMOTE"
 		fi
 		;;
 	xxdiff)
-- 
1.6.2.2.428.gea44ab

```

## Johannes Schindelin, 2009-04-05 09:35

Subject: Re: [PATCH] mergetool-lib: make (g)vimdiff workable under Windows
Message-ID: <alpine.DEB.1.00.0904051134210.10279@pacific.mpi-cbg.de>
URL: https://gitlist.dev/e/alpine.DEB.1.00.0904051134210.10279%40pacific.mpi-cbg.de
In-Reply-To: <200904041517.55890.markus.heidelberg@web.de>

```

Hi,

On Sat, 4 Apr 2009, Markus Heidelberg wrote:

> Under Windows vimdiff and gvimdiff are not available as symbolic links, 
> but as batch files vimdiff.bat and gvimdiff.bat. These files weren't 
> found by 'type vimdiff' which led to the following error:
> 
>     The merge tool vimdiff is not available as 'vimdiff'
> 
> Even if they were found, it wouldn't work to invoke these batch files
> from git-mergetool.
> 
> To solve this, use vim and gvim (vim.exe and gvim.exe) and pass the -d
> command line switch over to them.
> 
> Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
> ---
> 
> This patch goes on top of the current difftool/mergetool patches from David.

,.. which is a pity, because I could have applied them directly to 
msysGit's 'devel' branch otherwise.

Thanks,
Dscho

```

## Markus Heidelberg, 2009-04-05 10:32

Subject: Re: [PATCH] mergetool-lib: make (g)vimdiff workable under Windows
Message-ID: <200904051232.19939.markus.heidelberg@web.de>
URL: https://gitlist.dev/e/200904051232.19939.markus.heidelberg%40web.de
In-Reply-To: <alpine.DEB.1.00.0904051134210.10279@pacific.mpi-cbg.de>

```

Johannes Schindelin, 05.04.2009:
> Hi,
> 
> On Sat, 4 Apr 2009, Markus Heidelberg wrote:
> 
> > Under Windows vimdiff and gvimdiff are not available as symbolic links, 
> > but as batch files vimdiff.bat and gvimdiff.bat. These files weren't 
> > found by 'type vimdiff' which led to the following error:
> > 
> >     The merge tool vimdiff is not available as 'vimdiff'
> > 
> > Even if they were found, it wouldn't work to invoke these batch files
> > from git-mergetool.
> > 
> > To solve this, use vim and gvim (vim.exe and gvim.exe) and pass the -d
> > command line switch over to them.
> > 
> > Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
> > ---
> > 
> > This patch goes on top of the current difftool/mergetool patches from David.
> 
> ,.. which is a pity, because I could have applied them directly to 
> msysGit's 'devel' branch otherwise.

There is currently a lot of refactoring going on in difftool/mergetool,
so of course I didn't send this to Junio against 'master'. But if you
want I can send it for you based on 'master' (or 4msysgit.git 'devel').

Junio, is this something for maint? I'm not sure, since this problem
only occurs on Windows and 'maint' isn't interesting for msysgit ATM.

Markus

```

## Junio C Hamano, 2009-04-05 18:41

Subject: Re: [msysGit] [PATCH] mergetool-lib: make (g)vimdiff workable under Windows
Message-ID: <7v63hjt03k.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v63hjt03k.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <200904051232.19939.markus.heidelberg@web.de>

```
Markus Heidelberg <markus.heidelberg@web.de> writes:

> Junio, is this something for maint? I'm not sure, since this problem
> only occurs on Windows and 'maint' isn't interesting for msysgit ATM.

I am not Dscho (nor J6t) but the last time I asked him about some other
"This makes it work better on Windows" patch, the conclusion was "only
Windows has issues and msysgit does not use 'maint'", which I agreed to be
a sensible answer for an undermanned and still-on bleeding edge project
like msysgit.

I don't mind a trivial backport for only mergetool part to the tip of
'master' (because difftool is not in master) that later makes me deal with
a small merge conflict when the refactoring topic hits master.  Or Dscho
can apply such a backport and carry it as a msysgit-only patch until my
'master' is updated with the refactoring topic (at which point the
tentative patch needs to be dropped).  Either would work fine with me.

```
