I have spend some time to configure git (git version 2.35.3.windows.1) to use WinMerge (2.16.20) as a external difftool. This post was my entry point and this Gist seem to help some people. Still no luck on my side.
$ git config --global --list
...
diff.tool=winmerge
difftool.winmerge.prompt=false
difftool.winmerge.trustexitcode=true
difftool.winmerge.cmd=.... (different versions see below)
--------------------------------------------------------------------------------
Example
cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -u -e \"$LOCAL\" \"$REMOTE\"
Question 1: In the post the author refers to version 2.5 of git. But the official repo list 2.36 as lastest release. There seems to be a 2.5 release from 2015 for windows. Is that experimental? Or not official?
Question 2: Can somebody explain to what git difftool
is doing behing the scenes? Is there a way to simulate the call outside of git, so I could debug it better? Maybe someone also had this problem an could explain how he debugged the problem
I have no error message (seems to get swallowd ...)
CodePudding user response:
It's a nightmare to write correct spaces, slashes and backslashes of Windows paths in gitconfig. To avoid it, add c:\Program Files (x86)\WinMerge
to the system variable Path
(google windows how to edit system variables
) so that we can invoke an executable (WinMergeU.exe
in your case) under the paths directly in the command line instead of its absolute path.
After updating Path
, reopen git-bash to reload it. Run git config --global -e
to edit difftool.winmerge.cmd
[difftool "winmerge"]
cmd = WinMergeU.exe -u -e "$LOCAL" "$REMOTE"
To test if it works, enter a git repository and run git difftool HEAD^ HEAD
. You can try other git diff
commands, replacing git diff
with git difftool
.