Restore .git-hooks/commit-msg
...that 729ae51350
"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>
This commit is contained in:
parent
68b6d50734
commit
ff5d23638b
1 changed files with 97 additions and 43 deletions
|
@ -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,31 +94,13 @@
|
|||
# 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
|
||||
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)"
|
||||
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
|
||||
|
@ -56,26 +115,21 @@ if test ! -s "${dest}" ; then
|
|||
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
|
||||
fi
|
||||
|
||||
#------------------ copied gerrit commit-msg hook to handle ChangeId <--
|
||||
|
||||
exit 0
|
||||
|
||||
# vi:set shiftwidth=4 expandtab:
|
||||
|
|
Loading…
Reference in a new issue