git difftool
seems to get confused on Windows. If a new file has been added, Git sends "\.\nul" as the 'left' file to the diff tool.
To reproduce this:
{create a new file}
git add .
git difftool --staged
Now, WinMerge (or whichever viewer you're using) starts but reports that the left path ("\.\nul") is invalid.
This problem has been reported over the years several times on SO. For example, this is the exact same issue:
How to get winmerge to show diff for new file in git?
However, the accepted solution in the above question (and all the others) simply doesn't work for me. And now that we're in 2020, is there an official workaround for this problem?
Mercurial has never had this problem. It sends the diff viewer valid paths and works perfectly. I'm surprised to run into this issue with Git.