所以git hook只将更改Id放入提交.尽管可以将合并提交推送到审阅分支,甚至Gerrit也配置为在提交消息中要求Change-Id.并且当推送合并提交时,所有后续提交将取决于合并提交 - 因为没有更改Id.那么不将变更ID包含在合并提交中的目的是什么?
ssc*_*rth 22
Git中的根本问题是commit-msg没有冲突就不会为合并提交调用钩子.
但是,prepare-commit-msg调用(任何)合并提交.所以我目前所做的是让Gerrit Change-Id也添加到合并提交而没有冲突是使用这样的prepare-commit-msg钩子:
#!/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
Run Code Online (Sandbox Code Playgroud)
检查.git/MERGE_MSG确保commit-msg在修改合并提交时不会被调用,因为在这种情况下,无论如何都会由Git直接调用该钩子.请注意,对于带冲突的合并提交,这种方法将导致commit-msg被调用两次,一次作为此prepare-commit-msg钩子的一部分,一次由Git commit-msg在提交冲突解决后调用,但这不会导致任何问题,因为Gerrit的commit-msg钩子检查是否Change-Id已经已添加,如果是这样的话,不会再添加它.
如果您现在问自己为什么Gerrit不仅仅使用prepare-commit-msg钩子来添加Change-Id,我想这只是为了防止用户意外地Change-Id从提交消息中删除.commit-msg在编辑器关闭后将其添加为钩子的一部分更安全.
| 归档时间: |
|
| 查看次数: |
4956 次 |
| 最近记录: |