ledger/tools/pre-commit
John Wiegley 10ba30ddfd Added tools/excludes and tools/pre-commit
These files are used to creat ea Git pre-commit hook which verifies each
proposed change by running "make check".  Otherwise, I only know if my
working tree is sane, and not if each commit is sane before it goes into
the repository.
2009-02-13 05:33:55 -04:00

39 lines
1 KiB
Bash
Executable file

#!/bin/sh
set -e
TMPDIR=$HOME/Products/ledger-pre-commit
MIRROR=$HOME/Products/ledger-pre-commit-mirror
# Checkout a copy of the current index into TMPDIR
git checkout-index --prefix=$MIRROR/ -af
# Remove files which are no longer present in the index
git diff-index --cached --name-only --diff-filter=D -z HEAD | \
(cd $MIRROR && xargs -0 rm -f --)
# Copy over changes, ignoring timestamps
rsync -rlpgoDO --size-only --delete \
--exclude-from=tools/excludes $MIRROR/ $TMPDIR/
cd $TMPDIR
# Make sure there is a current Makefile. Regeneration of Makefile happens
# automatically, but if myacprep or acprep changes, we want to regenerate
# everything manually.
if [ ! -f Makefile -o \
\( -f tools/myacprep -a -f acprep -a \
\( tools/myacprep -nt Makefile -o acprep -nt Makefile \) \) ]
then
if [ -f tools/myacprep ]; then
tools/myacprep --local
elif [ -f acprep ]; then
./acprep --local
elif [ -f autogen.sh ]; then
sh autogen.sh && ./configure
else
autoreconf && ./configure
fi
fi
nice -n 20 make check