so the git hook only puts change Id into commits. Although merge commits can be pushed to review branch even Gerrit is configured to require Change-Id in the commit messages. And when a merge commit has been pushed all the subsequent commit will depends on the merge commit - since there is no change Id. So what is the purpose not to include change Id into merge commit?
To squash the commits, use git rebase -i to do an interactive rebase. For the example above where the last two commits have the same Change-Id, this means an interactive rebase for the last two commits should be done. For further details about the git rebase command please check the Git documentation for rebase.
You can view a specific change using Gerrit's Review screen. This screen provides the following information for each change: Current and previous patch sets. Change properties, such as owner, project, and target branch.
The underlying problem in Git is that commit-msg
hooks are not called for merge commits without conflicts.
However, the prepare-commit-msg
is called for (any) merge commits. So what I currently do to get Gerrit's Change-Id
also added to merge commits without conflicts is to use a prepare-commit-msg
hook like this:
#!/bin/sh
if [ "$2" = "merge" -a -f .git/MERGE_MSG ]; then
# Explicitly call Gerrit's commit-msg hook for merge commits.
.git/hooks/commit-msg "$1"
fi
The check for .git/MERGE_MSG
ensures that commit-msg
will not be called if amending a merge commit, because in that case that hook is called directly by Git anyway. Note that for merge commits with conflicts this approach will result in commit-msg
being called twice, once as part of this prepare-commit-msg
hook and once by Git when it calls commit-msg
after committing the conflicts resolution, but that does not cause any problems as Gerrit's commit-msg
hook checks whether the Change-Id
has already been added and does not add it again if that's the case.
If you're now asking your self why Gerrit does not simply use only a prepare-commit-msg
hook to add the Change-Id
, I guess that just to prevent the user from accidentally deleting the Change-Id
from the commit message. Adding it as part of a commit-msg
hook after the editor has closed is just safer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With