Directory comparison of Git branches
This (comparing directories instead of file-by-file) should be available soon:
See [ANNOUNCE] Git 1.7.11.rc1:
"
git difftool
" learned the "--dir-diff
" option to spawn external diff tools that can compare two directory hierarchies at a time after populating two temporary directories, instead of running an instance of the external tool once per a file pair.
See "Patch difftool
: teach difftool
to handle directory diffs", from this fork of git:
When '
difftool
' is called to compare a range of commits that modify more than one file, it opens a separate instance of the diff tool for each file that changed.The new '
--dir-diff
' option copies all the modified files to a temporary location and runs a directory diff on them in a single instance of the diff tool.
It sounds like you've already figured out the right answer -- use git clone
and git checkout
to set up a directory to compare to, then run BCompare.exe
. The below script might be a good starting point.
#!/bin/sh
( # execute in a subshell so you can continue
# working in the current shell
set -o xtrace # bash setting that echos each command before it's executed
> /tmp/auto_bcompare_log # truncate existing log file
BRANCH="$1" # get branch argument from command line
TEMPDIR=`mktemp -d` # get a temp directory
CWD=`pwd` # remember the current directory
git clone $CWD $TEMPDIR
cd $TEMPDIR
git checkout $BRANCH
cd $CWD
BCompare.exe $CWD $TEMPDIR
rm -rf $TEMPDIR
) >> /tmp/auto_bcompare_log 2>&1 < /dev/null & # background and redirect
# stdout/stderr/stdin