blob: 20e886a60489f4912ae88fe0fc2a6c04e3e9df04 [file] [log] [blame]
#!/bin/sh
#
# A pre-commit hook to detect changes that look like forgotten
# conflict markers. If any added line starting with '<<<<<<< .'
# or '>>>>>>> .' is found, the commit is aborted with a nice
# error message.
#
# $HeadURL$
# $LastChangedDate$
# $LastChangedBy$
# $LastChangedRevision$
REPOS=$1
TXN=$2
SVNLOOK=/usr/bin/svnlook
# Check arguments
if [ -z "$REPOS" -o -z "$TXN" ]; then
echo "Syntax: $0 path_to_repos txn_id" >&2
exit 1
fi
# We scan through the transaction diff, looking for things that look
# like conflict markers. If we find one, we abort the commit.
# (We only look for the conflict beginning and end markers, but not for
# the separator line "=======" because that line occurs reasonably often
# in normal text files.)
SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPOS" | grep -E '^\+(<{7} \.|>{7} \.)' | wc -l)
if [ $SUSPICIOUS -ne 0 ]; then
echo "Some parts of your commit look suspiciously like merge" >&2
echo "conflict markers. Please double-check your diff and try" >&2
echo "committing again." >&2
exit 1
fi
# No conflict markers detected, let it fly!
exit 0