diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2023-03-08 08:22:32 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2023-03-08 10:37:00 +0000 |
commit | ff5d23638b198438906fa3f91cee38a8b1dbc82e (patch) | |
tree | e2b02209fe47f99b81122fb0bc875052344ef515 /.git-hooks/commit-msg | |
parent | 68b6d507342a440b5441882e74587054d530687b (diff) |
Restore .git-hooks/commit-msg
...that 729ae5135042427b62a856d792f51afad1026622 "Update Sifr Mimetype Icons"
had modified, presumably in error
Change-Id: I077eeb2d304d145a68edceae7196417b329adaee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148458
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to '.git-hooks/commit-msg')
-rwxr-xr-x | .git-hooks/commit-msg | 140 |
1 files changed, 97 insertions, 43 deletions
diff --git a/.git-hooks/commit-msg b/.git-hooks/commit-msg index 2adf4c381d34..950a6b709d9a 100755 --- a/.git-hooks/commit-msg +++ b/.git-hooks/commit-msg @@ -1,5 +1,82 @@ #!/bin/sh -# From Gerrit Code Review 3.6.3 +# +# 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. + +# avoid [[ which is not POSIX sh. + +if test "$#" != 1 ; then + echo "$0 requires an argument." + exit 1 +fi + +if test ! -f "$1" ; then + echo "file does not exist: $1" + exit 1 +fi + +abort() { + cp $1 $1.save + cat >&2 <<EOF +Commit aborted, your commit message was saved as '$1.save'. + +Reason: $2 + +EOF + exit 1 +} + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + abort "$1" "Duplicate Signed-off-by lines." +} + +# Check that the first line exists, and is not an asterisk + +if [ -z "`head -n 1 $1 | grep -v '^[[:blank:]]*\*$'`" ] ; then + abort "$1" "Please provide the general description on the first line." +fi + +# ...and that it is not too long + +len="`head -n 1 $1 | tr -d '\n' | wc -c`" +if [ "$len" -gt 79 ] ; then + abort "$1" "The first line is $len characters, please try to fit into 79 characters." +fi + +fdo_regex='fdo#[0-9]+' +if grep -E -q "$fdo_regex" $1; then + for bugid in `head -n 1 $1 | grep -E -o "$fdo_regex" |sed 's/fdo#//'` + do + if [ "`echo $bugid |sed 's/fdo#//'`" -gt 88775 ]; then + abort "$1" "The first line contains a suspicious fdo# rereference: 'fdo#$bugid', did you mean tdf#?" + fi + done +fi + +# ...and that it does not continue on the second line +if [ "`wc -l < $1`" -gt 1 -a -n "`head -n 2 $1 | tail -n 1 | sed 's/^#.*//'`" ] ; then + abort "$1" "The second line is not empty - maybe the first line continues there?" +fi + +# Check that the message is not a ChangeLog-like one + +if [ -n "`head -n 1 $1 | grep '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.*<.*@.*>'`" ] ; then + abort "$1" "The commit message looks like ChangeLog, please use the git form." +fi + +# Check that lines do not start with '#<something>' (possibly accidental commit, +# such as starting the message with '#ifdef', git commits start with '#<whitespace>'. + +if [ -n "`grep '^#[^[:blank:]]' $1`" ] ; then + abort "$1" "Possible accidental comment in the commit message (leading # without space)." +fi + +# From Gerrit Code Review 2.16.15 # # Part of Gerrit Code Review (https://www.gerritcodereview.com/) # @@ -17,65 +94,42 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -u - -# avoid [[ which is not POSIX sh. -if test "$#" != 1 ; then - echo "$0 requires an argument." - exit 1 -fi - -if test ! -f "$1" ; then - echo "file does not exist: $1" - exit 1 -fi - # Do not create a change id if requested -if test "false" = "$(git config --bool --get gerrit.createChangeId)" ; then - exit 0 -fi - -if git rev-parse --verify HEAD >/dev/null 2>&1; then - refhash="$(git rev-parse HEAD)" -else - refhash="$(git hash-object -t tree /dev/null)" +if test "false" = "`git config --bool --get gerrit.createChangeId`" ; then + exit 0 fi -random=$({ git var GIT_COMMITTER_IDENT ; echo "$refhash" ; cat "$1"; } | git hash-object --stdin) +# $RANDOM will be undefined if not using bash, so don't use set -u +random=$( (whoami ; hostname ; date; cat $1 ; echo $RANDOM) | git hash-object --stdin) dest="$1.tmp.${random}" trap 'rm -f "${dest}"' EXIT if ! git stripspace --strip-comments < "$1" > "${dest}" ; then - echo "cannot strip comments from $1" - exit 1 + echo "cannot strip comments from $1" + exit 1 fi if test ! -s "${dest}" ; then - echo "file is empty: $1" - exit 1 + echo "file is empty: $1" + exit 1 fi -reviewurl="$(git config --get gerrit.reviewUrl)" -if test -n "${reviewurl}" ; then - if ! git interpret-trailers --parse < "$1" | grep -q '^Link:.*/id/I[0-9a-f]\{40\}$' ; then - if ! git interpret-trailers \ - --trailer "Link: ${reviewurl%/}/id/I${random}" < "$1" > "${dest}" ; then - echo "cannot insert link footer in $1" - exit 1 - fi - fi -else - # Avoid the --in-place option which only appeared in Git 2.8 - # Avoid the --if-exists option which only appeared in Git 2.15 - if ! git -c trailer.ifexists=doNothing interpret-trailers \ +# Avoid the --in-place option which only appeared in Git 2.8 +# Avoid the --if-exists option which only appeared in Git 2.15 +if ! git -c trailer.ifexists=doNothing interpret-trailers \ --trailer "Change-Id: I${random}" < "$1" > "${dest}" ; then echo "cannot insert change-id line in $1" exit 1 - fi fi if ! mv "${dest}" "$1" ; then - echo "cannot mv ${dest} to $1" - exit 1 + echo "cannot mv ${dest} to $1" + exit 1 fi + +#------------------ copied gerrit commit-msg hook to handle ChangeId <-- + +exit 0 + +# vi:set shiftwidth=4 expandtab: |