When using git, commit messages should use ChangeLog format, with the
following modifications:
-- Add a single short line explaining the change, then an empty line,
- then unindented ChangeLog entries.
+- Start with a single unindented summary line explaining the change,
+ then an empty line, then unindented ChangeLog entries.
You can use various Emacs functions to ease this process; see (info
"(emacs)Change Log Commands") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
-- The summary line is limited to 72 characters (enforced by a commit
- hook). If you have trouble making that a good summary, add a
- paragraph below it, before the individual file descriptions.
+- Limit lines in commit messages to 78 characters, unless they consist
+ of a single word of at most 140 characters. If you have trouble
+ fitting the summary into 78 characters, add a summarizing paragraph
+ below the empty line and before the individual file descriptions.
- If only a single file is changed, the summary line can be the normal
file first line (starting with the asterisk). Then there is no
the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
+- Commit messages should contain only printable UTF-8 characters.
+
+- Commit messages should not contained the "Signed-off-by:" lines that
+ are used in some other projects.
+
** ChangeLog notes
- Emacs generally follows the GNU coding standards when it comes to
+2015-03-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix 'commit-msg' to cite 'CONTRIBUTE'
+ As suggested in:
+ http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00947.html
+ Also, have the two files match better.
+ * CONTRIBUTE: Match what's in build-aux/git-hooks/commit-msg.
+ * build-aux/git-hooks/commit-msg: Mention 'CONTRIBUTE'.
+
2015-03-23 Andreas Schwab <schwab@suse.de>
* configure.ac: Fix jpeg version check to work with gcc >= 5.
/^#/ { next }
!/^.*$/ {
- print "Invalid character (not UTF-8) in commit message"
+ print "Invalid character (not UTF-8) in commit message; see 'CONTRIBUTE'"
status = 1
}
sub(/^squash! /, "")
if ($0 ~ "^" space) {
- print "White space at start of commit message'\''s first line"
+ print "White space at start of commit message'\''s first line; see 'CONTRIBUTE'"
status = 1
}
}
nlines == 2 && $0 ~ non_space {
- print "Nonempty second line in commit message"
+ print "Nonempty second line in commit message; see 'CONTRIBUTE'"
status = 1
}
}
78 < length && $0 ~ space {
- print "Line longer than 78 characters in commit message"
+ print "Line longer than 78 characters in commit message; see 'CONTRIBUTE'"
status = 1
}
140 < length {
- print "Word longer than 140 characters in commit message"
+ print "Word longer than 140 characters in commit message; see 'CONTRIBUTE'"
status = 1
}
/^Signed-off-by: / {
- print "'\''Signed-off-by:'\'' in commit message"
+ print "'\''Signed-off-by:'\'' in commit message; see 'CONTRIBUTE'"
status = 1
}
$0 ~ non_print {
- print "Unprintable character in commit message"
+ print "Unprintable character in commit message; see 'CONTRIBUTE'"
status = 1
}
END {
if (nlines == 0) {
- print "Empty commit message"
+ print "Empty commit message; see 'CONTRIBUTE'"
status = 1
}
exit status