Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
559 views
Welcome To Ask or Share your Answers For Others

1 Answer

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...