threads / patch / 18713

patchmergetool-lib: make (g)vimdiff workable under Windows

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

## tl;dr

4 messages between Apr 4, 2009 and Apr 5, 2009. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Markus Heidelberg· Apr 4, 2009, 13:17 UTC · lore

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(-)
Show changes to git-mergetool--lib.sh +10 −4
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· Apr 5, 2009, 09:35 UTC · re: Markus Heidelberg · lore

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

Hi,
On Sat, 4 Apr 2009, Markus Heidelberg wrote:
Show 16 quoted lines
> 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· Apr 5, 2009, 10:32 UTC · re: Johannes Schindelin · lore

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

Johannes Schindelin, 05.04.2009:
Show 23 quoted lines
> 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· Apr 5, 2009, 18:41 UTC · re: Markus Heidelberg · lore

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

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.

← back to recent threads