diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-12-10 20:44:35 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-12-10 20:45:02 -0800 |
commit | 9ac033203005ba53c4f1e65fcb44ae95edf1b402 (patch) | |
tree | 55786c094b9e3b0e974c4c076a89969ab3f55307 /build-aux | |
parent | 0c2f254bc3d69ba08a59037e8e192d5d7fb7d816 (diff) | |
download | emacs-9ac033203005ba53c4f1e65fcb44ae95edf1b402.tar.gz |
Improve commit-msg messages and autosquash
Problem reported by Michal Nazarewicz in Bug#19337.
* build-aux/git-hooks/commit-msg: Add "commit message" to
diagnostics. Distinguish better between tabs and other
unprintable chars in diagnostics. Don't complain if a prefix
"fixup! " or "squash! " makes a summary line too long.
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/git-hooks/commit-msg | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index f407881b0db..d2a0c59dace 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -49,7 +49,7 @@ exec $awk ' /^#/ { next } !/^.*$/ { - print "Invalid character (not UTF-8)" + print "Invalid character (not UTF-8) in commit message" status = 1 } @@ -57,39 +57,50 @@ exec $awk ' { nlines++ } - nlines == 1 && /^[[:space:]]/ { - print "White space at start of first line" - status = 1 - } + nlines == 1 { + # Ignore special markers used by "git rebase --autosquash". + if (! sub(/^fixup! /, "")) + sub(/^squash! /, "") - nlines == 2 && /[^[:space:]]/ { - print "Nonempty second line" - status = 1 + if (/^[[:space:]]/) { + print "White space at start of commit message'\''s first line" + status = 1 + } } - /[^[:print:]]/ { - print "Unprintable character; please use spaces instead of tabs" + nlines == 2 && /[^[:space:]]/ { + print "Nonempty second line in commit message" status = 1 } 72 < length && /[[:space:]]/ { - print "Line longer than 72 characters" + print "Line longer than 72 characters in commit message" status = 1 } 140 < length { - print "Word longer than 140 characters" + print "Word longer than 140 characters in commit message" status = 1 } /^Signed-off-by: / { - print "'\''Signed-off-by:'\'' present" + print "'\''Signed-off-by:'\'' in commit message" + status = 1 + } + + /[^[:print:]]/ { + if (gsub(/\t/, "")) { + print "Tab in commit message; please use spaces instead" + } + if (/[^[:print:]]/) { + print "Unprintable character in commit message" + } status = 1 } END { if (nlines == 0) { - print "Empty change log entry" + print "Empty commit message" status = 1 } exit status |