; Let pre-commit git hook check merged in changes (Bug#29197)

* build-aux/git-hooks/pre-commit: If GIT_MERGE_CHECK_OTHER is 'true',
check changes against the merge target, rather than the current
branch.  Include file name when giving error message about
non-standard characters.
This commit is contained in:
Noam Postavsky 2018-02-14 19:58:07 -05:00
parent fe06fcc595
commit fca935e4ab

View file

@ -28,7 +28,7 @@ exec >&2
# When doing a two-way merge, ignore problems that came from the other # When doing a two-way merge, ignore problems that came from the other
# side of the merge. # side of the merge.
head=HEAD head=HEAD
if test -r "$GIT_DIR"/MERGE_HEAD; then if test -r "$GIT_DIR"/MERGE_HEAD && test "$GIT_MERGE_CHECK_OTHER" != true; then
merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit
for merge_head in $merge_heads; do for merge_head in $merge_heads; do
case $head in case $head in
@ -42,15 +42,10 @@ if test -r "$GIT_DIR"/MERGE_HEAD; then
fi fi
git_diff='git diff --cached --name-only --diff-filter=A' git_diff='git diff --cached --name-only --diff-filter=A'
ok_chars='\0+[=-=]./0-9A-Z_a-z'
nbadchars=`$git_diff -z $head | tr -d "$ok_chars" | wc -c`
if test "$nbadchars" -ne 0; then # 'git diff' will backslash escape tabs and newlines, so we don't have
echo "File name does not consist of -+./_ or ASCII letters or digits." # to worry about word splitting here.
exit 1 $git_diff $head | sane_egrep 'ChangeLog|^-|/-|[^-+./_0-9A-Z_a-z]' | while IFS= read -r new_name; do
fi
for new_name in `$git_diff $head`; do
case $new_name in case $new_name in
-* | */-*) -* | */-*)
echo "$new_name: File name component begins with '-'." echo "$new_name: File name component begins with '-'."
@ -58,6 +53,9 @@ for new_name in `$git_diff $head`; do
ChangeLog | */ChangeLog) ChangeLog | */ChangeLog)
echo "$new_name: Please use git commit messages, not ChangeLog files." echo "$new_name: Please use git commit messages, not ChangeLog files."
exit 1;; exit 1;;
*)
echo "$new_name: File name does not consist of -+./_ or ASCII letters or digits."
exit 1;;
esac esac
done done