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}"