Search code examples
gitgit-diffbeyondcompare3

git difftool: how to compare zip files


I am trying to compare a binary file using "git difftool". This file is also staged, but it seems that this isn't important. So I am using something like below:

git difftool --staged /path/to/file

and my .gitconfig is configured like so:

[difftool "bc3"]
    path = C:/Program Files (x86)/Beyond Compare 3/BComp.com
    cmd = BComp.com \"$LOCAL\" \"$REMOTE\" -lefttitle="Remote" -righttitle="$BASE" -lro
[diff]
    tool = bc3
[difftool]
    prompt = false

So when I run git difftool it opens Beyond Compare as expected, however, I get an error that the base binary file doesn't exist. The modified local copy is correctly loaded into the tool.

I have noticed this with *.bcpkg (Beyond Compare settings file, a zip file basically), and also regular *.zip files. But seems to work fine for *.exe files. What I have noticed is that git difftool shouldn't return unless Beyond Compare is closed, because if it returns the temp file created by it gets deleted. But in case of a zip file it always returns immediately.

By the way diff for all other file types works fine for me. I am on Windows 7 (64-bit) and as you can see have configured Beyond Compare 3.


Solution

  • This is fixed in Beyond Compare 4. Beyond Compare 4 supports diffing zip files from git.

    Beyond Compare 3 doesn't support diffing zip files from git. It will fail with the error message: Folder Not Available: C:\Users\username\AppData\Local\Temp\42Ycl9_filename.zip

    If you want to evaluate Beyond Compare 4 to test zip file diffs, run the installer and select Create portable install and install to a folder on your desktop. This doesn't require admin rights. Then run git config --global difftool.bc3.path "c:/users/username/desktop/Beyond Compare 4/bcomp.exe" to make git use the portable install. After you're done testing, just delete the folder on your desktop to remove the version 4 portable install.

    To upgrade your license after evaluating a trial of version 4, fill in the upgrade form on the Scooter Software website.