Documentation/user-change-id.txt explains:
To be picked up by Gerrit, a Change-Id line must be in the
footer (last paragraph) of a commit message, and may be mixed
together with Signed-off-by, Acked-by, or other such lines.
It is easy to forget to do that, producing a commit message like
Do something great
Change-Id: I55ca6286e3e4f4fba5d0448333fa99fc5a404a73
Bug: 12345
Because of the blank line between the Change-Id and other trailer
line, the Change-Id is not picked up by Gerrit. Worse, if the
repository is configured with "Require Change-Id in commit message"
set to false, then Gerrit comes up with its own change-id for the
change. If I amend my commit in response to review comments and push
for review again, Gerrit comes up with another change-id, so my
amended version of the change shows up as a new change.
This sequence of events can be avoided by setting "Require Change-Id"
to true, but some projects like to review changes from upstreams that
don't use Gerrit. Fortunately, even these projects don't need changes
with a Change-Id before the footer. Treat them as an error
unconditionally, with the same advice to the user about how to clean up
that is already shown in Require Change-Id mode:
ERROR: Change-Id must be in message footer
Hint: run
git commit --amend
and move 'Change-Id: Ixxx..' to the bottom on a separate line
As a side benefit, treating this as its own error type also allows
simplifying the error reporting for changes with no Change-Id.
Reported-by: Paul Crowley <paulcrowley@google.com>
Change-Id: Ia5d43370e075d6fc13cd9b22031436f1138e90c0