aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2018-02-14 19:58:07 -0500
committerNoam Postavsky2018-08-28 08:04:17 -0400
commitfca935e4abe817130abb2676ec2f37b73e4f45f4 (patch)
tree27366dd88dc82ae9e02d5164ed02da3302539f63
parentfe06fcc5955731b1373aa74a586da04f5c2c11f7 (diff)
downloademacs-fca935e4abe817130abb2676ec2f37b73e4f45f4.tar.gz
emacs-fca935e4abe817130abb2676ec2f37b73e4f45f4.zip
; 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.
-rwxr-xr-xbuild-aux/git-hooks/pre-commit16
1 files changed, 7 insertions, 9 deletions
diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit
index 5e42dab233b..c0455fb2fa2 100755
--- a/build-aux/git-hooks/pre-commit
+++ b/build-aux/git-hooks/pre-commit
@@ -28,7 +28,7 @@ exec >&2
28# When doing a two-way merge, ignore problems that came from the other 28# When doing a two-way merge, ignore problems that came from the other
29# side of the merge. 29# side of the merge.
30head=HEAD 30head=HEAD
31if test -r "$GIT_DIR"/MERGE_HEAD; then 31if test -r "$GIT_DIR"/MERGE_HEAD && test "$GIT_MERGE_CHECK_OTHER" != true; then
32 merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit 32 merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit
33 for merge_head in $merge_heads; do 33 for merge_head in $merge_heads; do
34 case $head in 34 case $head in
@@ -42,15 +42,10 @@ if test -r "$GIT_DIR"/MERGE_HEAD; then
42fi 42fi
43 43
44git_diff='git diff --cached --name-only --diff-filter=A' 44git_diff='git diff --cached --name-only --diff-filter=A'
45ok_chars='\0+[=-=]./0-9A-Z_a-z'
46nbadchars=`$git_diff -z $head | tr -d "$ok_chars" | wc -c`
47 45
48if test "$nbadchars" -ne 0; then 46# 'git diff' will backslash escape tabs and newlines, so we don't have
49 echo "File name does not consist of -+./_ or ASCII letters or digits." 47# to worry about word splitting here.
50 exit 1 48$git_diff $head | sane_egrep 'ChangeLog|^-|/-|[^-+./_0-9A-Z_a-z]' | while IFS= read -r new_name; do
51fi
52
53for new_name in `$git_diff $head`; do
54 case $new_name in 49 case $new_name in
55 -* | */-*) 50 -* | */-*)
56 echo "$new_name: File name component begins with '-'." 51 echo "$new_name: File name component begins with '-'."
@@ -58,6 +53,9 @@ for new_name in `$git_diff $head`; do
58 ChangeLog | */ChangeLog) 53 ChangeLog | */ChangeLog)
59 echo "$new_name: Please use git commit messages, not ChangeLog files." 54 echo "$new_name: Please use git commit messages, not ChangeLog files."
60 exit 1;; 55 exit 1;;
56 *)
57 echo "$new_name: File name does not consist of -+./_ or ASCII letters or digits."
58 exit 1;;
61 esac 59 esac
62done 60done
63 61