Do not create a change id if gerrit.createChangeId == false
This functionality was introduced in
I43a098453005fe0dcc60b6c4f6e4817f97ce24cf and seems to have been
accidentally removed by Ifc75def19d32b91e196890572f15c4d361fc93fa. The
option is still documented in Documentation/cmd-hook-commit-msg.txt.
Being able to toggle Change-Id generation is useful when using the same
repository to maintain changes against different remotes. For example,
you might use a private mirror to develop changes and have those
reviewed in Gerrit, and then submit patches that have been privately
reviewed to some upstream remote that uses a different review system.
Change-Id: I3d9eaae0a18d21764665ca44c6afddeacb483163
diff --git a/resources/com/google/gerrit/server/commit-msg_test.sh b/resources/com/google/gerrit/server/commit-msg_test.sh
index 99bf509..81371dd 100755
--- a/resources/com/google/gerrit/server/commit-msg_test.sh
+++ b/resources/com/google/gerrit/server/commit-msg_test.sh
@@ -46,6 +46,21 @@
fi
}
+# Change-Id should not be inserted if gerrit.createChangeId=false
+function test_suppress_changeid {
+ cat << EOF > input
+bla bla
+EOF
+
+ git config gerrit.createChangeId false
+ ${hook} input || fail "failed hook execution"
+ git config --unset gerrit.createChangeId
+ found=$(grep -c '^Change-Id' input || true)
+ if [[ "${found}" != "0" ]]; then
+ fail "got ${found} Change-Ids, want 0"
+ fi
+}
+
# Change-Id goes after existing trailers.
function test_at_end {
cat << EOF > input
diff --git a/resources/com/google/gerrit/server/tools/root/hooks/commit-msg b/resources/com/google/gerrit/server/tools/root/hooks/commit-msg
index 738e660..3f4cd7a 100755
--- a/resources/com/google/gerrit/server/tools/root/hooks/commit-msg
+++ b/resources/com/google/gerrit/server/tools/root/hooks/commit-msg
@@ -32,6 +32,11 @@
exit 1
fi
+# Do not create a change id if requested
+if test "false" = "`git config --bool --get gerrit.createChangeId`" ; then
+ exit 0
+fi
+
# $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}"