I'm following the docs from the Git configuration page and trying to apply this to my Windows 7 environment. When I run say, "git diff file0" I get an error in P4Merge:
Errors: '/tmp/cH9ccM_file0' is (or points to) an invalid file.
This is a true statement. I do not have a directory called "/tmp". I've checked in C:\tmp, C:\cygwin\tmp, and %PROGRAMFILES%\Git\tmp.
Any ideas on how to change this directory to something I do have?
EDIT:
Additional info. Ultimately, I'm trying to get WinMerge (or any external program) to work. I chose to use P4Merge earlier, because I couldn't get WinMerge to work, so I decided to go with the program that was used in the aforementioned article.
Below is the relevant part of my .gitconfig:
[merge]
tool = extMerge
[mergetool "extMerge"]
cmd = extMerge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = false
[diff]
external = extDiff
extDiff script:
#!/usr/bin/sh
# extDiff
# Wrapper for using an external diff tool in Git
echo "File 1: $2"
echo "File 2: $5"
/usr/local/bin/extMerge "$2" "$5"
extMerge script:
#!/usr/bin/sh
echo $*
/c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe $*
So if I change a file called index.html, and run git diff, this is the result:
File 1: /tmp/XfGpOC_index.html
File 2: index.html
I assume you're using Cygwin... I think the problem is that for Cygwin, /tmp exists, but for Windows, it doesn't (it's somewhere else). For me, Cygwin's /tmp is located in $HOME/AppData/cygwin/tmp and that's where the file was. This might be different depending on how you installed Cygwin. Once you find Cygwin's /tmp, it's just a matter of finding a good environment variable (or creating a new one, if you need) to get a Windows path to the temp file. This worked for me:
[diff]
tool = p4mergeTool
[difftool "p4mergeTool"]
cmd = p4merge.exe $HOMEPATH/AppData/cygwin$LOCAL $REMOTE
I used HOMEPATH instead of HOME, because (it appears) HOMEPATH is the Windows HOME environment variable (\Users\myusername), while HOME is the cygwin HOME environment variable (/cygdrive/c/Users/myusername). From Cygwin, type printenv to see which environment variables might be a good fit.