blob: b840cc7b591daa5d7c662024b2f5b0205cc94b31 [file] [log] [blame]
#!/bin/sh
#
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# disallow ALOGW and ALOGE
if git diff --cached | grep "^\(+\| +\)" | grep -w 'ALOG[WE]\(_IF\)\?' > /dev/null; then
cat <<\EOF
ERROR: Attempt to add ALOGW or ALOGE. These should be used only if something
is truly catastrophic to the running application. Use ALOGI for
important errors, ALOGD for mundane errors, and ALOGV for unimportant
logs (don't use ALOGV for errors so they can be debugged).
If you are confident that the following uses are justified, commit this change with
git commit --no-verify
EOF
git diff --cached --diff-filter AM --color -G 'ALOG[WE](_IF)?' -- | awk '
BEGIN { found=0 }
/^\033\[[0-9]+m(@@|\+\+\+|\-\-\-)/ {
if (found) { print substr(chunk, 2); found=0; chunk="" }
if (match($1, "[-+]")) { print }
else { chunk="\n" $0 }
next
}
/^\033\[[0-9]+m ?\+/ {
if (match($0, "\\<(ALOG[WE](_IF)?)\\>")) {
found=1;
chunk=chunk "\n" gensub("\\<(ALOG[WE](_IF)?)\\>", "\033[7m\\1\033[27m", "g")
} else {
chunk=chunk "\n" $0
}
next
}
{
chunk=chunk "\n" $0
}
END { if (found) { print substr(chunk, 2) } }
'
exit 1
fi
# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --