mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
![Paolo Bonzini](/assets/img/avatar_default.png)
The prepare-commit-msg hook is run whenever a "fresh" commit message is prepared, just before it is shown in the editor (if it is). Its purpose is to modify the commit message in-place. It takes one to three parameters. The first is the name of the file that the commit log message. The second is the source of the commit message, and can be: "message" (if a -m or -F option was given); "template" (if a -t option was given or the configuration option commit.template is set); "merge" (if the commit is a merge or a .git/MERGE_MSG file exists); "squash" (if a .git/SQUASH_MSG file exists); or "commit", followed by a commit SHA1 as the third parameter (if a -c, -C or --amend option was given). If its exit status is non-zero, git-commit will abort. The hook is not suppressed by the --no-verify option, so it should not be used as a replacement for the pre-commit hook. The sample prepare-commit-msg comments out the `Conflicts:` part of a merge's commit message; other examples are commented out, including adding a Signed-off-by line at the bottom of the commit messsage, that the user can then edit or discard altogether. Signed-off-by: Paolo Bonzini <bonzini@gnu.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
25 lines
887 B
Bash
25 lines
887 B
Bash
#!/bin/sh
|
|
#
|
|
# An example hook script to check the commit log message.
|
|
# Called by git-commit with one argument, the name of the file
|
|
# that has the commit message. The hook should exit with non-zero
|
|
# status after issuing an appropriate message if it wants to stop the
|
|
# commit. The hook is allowed to edit the commit message file.
|
|
#
|
|
# To enable this hook, make this file executable.
|
|
|
|
# Uncomment the below to add a Signed-off-by line to the message.
|
|
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
|
# hook is more suited to it.
|
|
#
|
|
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
|
|
|
# This example catches duplicate Signed-off-by lines.
|
|
|
|
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
|
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
|
echo >&2 Duplicate Signed-off-by lines.
|
|
exit 1
|
|
}
|