hIpPy hIpPy - 1 year ago 111
Git Question

How to get winmerge to show diff for new file in git?

I can get winmerge to show me diffs for modified file. But for new files, winmerge gives a dialog saying 'Left path is invalid!'. I want it to show the left pane as empty and right pane with the contents of the file.

$ git difftool head^ newfile.txt

winmerge Dialog:

enter image description here

I'm on git version 2.8.2.windows.1

This is my git config for difftool:

tool = winmerge
prompt = false
[difftool "winmerge"]
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\"

What am I missing?

Answer Source

I could not find this exact workaround so I'm posting this. Hopefully, someone finds it useful.

I use a winmerge.sh script which simply passes an already created empty file for newly added (or removed) file. The script is in a dir that's on my PATH or /git/cmd/ dir for git bash.

winmerge.sh (similar to one here)

# $1 is $LOCAL
# $2 is $REMOTE
if [ "$2" = "$NULL" ] ; then
    # added
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl -wr "$1" "$empty"
elif [ "$1" = "$NULL" ] ; then
    # removed
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$empty" "$2"
    # modified
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$1" "$2"

I keep an empty file winmerge.empty at this path $HOME (which is c:/users/<username>).

I use the sh script in .gitconfig.


    tool = winmerge
    prompt = false
[difftool "winmerge"]
    cmd = winmerge.sh "$LOCAL" "$REMOTE"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download