Handle messages with only comments in the commit-msg hook
Commit messages with comments occur when the editor is aborted, and should be treated as empty. We do this using git-stripspace, which was introduced in 2005, so this has no compatibility implications. Bug: Issue 10600 Change-Id: I78b50a789860cc11d63d891b0507786890158754 (cherry picked from commit 627d07c2bfc505eb46b30f9deb80c85b90b4921f)
This commit is contained in:
parent
164d7feeec
commit
8025e1243c
@ -26,6 +26,18 @@ function test_empty {
|
||||
fi
|
||||
}
|
||||
|
||||
function test_empty_with_comments {
|
||||
rm -f input
|
||||
cat << EOF > input
|
||||
# comment
|
||||
|
||||
# comment2
|
||||
EOF
|
||||
if ${hook} input ; then
|
||||
fail "must fail on empty message"
|
||||
fi
|
||||
}
|
||||
|
||||
# a Change-Id already set is preserved.
|
||||
function test_preserve_changeid {
|
||||
cat << EOF > input
|
||||
@ -128,7 +140,7 @@ EOF
|
||||
|
||||
|
||||
# Test driver.
|
||||
|
||||
git init
|
||||
for func in $( declare -F | awk '{print $3;}' | sort); do
|
||||
case ${func} in
|
||||
test_*)
|
||||
|
@ -27,11 +27,6 @@ if test ! -f "$1" ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test ! -s "$1" ; then
|
||||
echo "file is empty: $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Do not create a change id if requested
|
||||
if test "false" = "`git config --bool --get gerrit.createChangeId`" ; then
|
||||
exit 0
|
||||
@ -41,8 +36,32 @@ fi
|
||||
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
|
||||
fi
|
||||
|
||||
if test ! -s "${dest}" ; then
|
||||
echo "file is empty: $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! mv "${dest}" "$1" ; then
|
||||
echo "cannot mv ${dest} to $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Avoid the --in-place option which only appeared in Git 2.8
|
||||
# Avoid the --if-exists option which only appeared in Git 2.15
|
||||
cat "$1" \
|
||||
| git -c trailer.ifexists=doNothing interpret-trailers --trailer "Change-Id: I${random}" > "${dest}" \
|
||||
&& mv "${dest}" "$1"
|
||||
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
|
||||
|
||||
if ! mv "${dest}" "$1" ; then
|
||||
echo "cannot mv ${dest} to $1"
|
||||
exit 1
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user