gpt4 book ai didi

git - 为什么 Gerrit 不将 change-id 包含到 merge 提交中?

转载 作者:IT王子 更新时间:2023-10-29 01:22:33 25 4
gpt4 key购买 nike

所以 git 钩子(Hook)只会将更改 Id 放入提交中。尽管可以将 merge 提交推送到审查分支,但即使 Gerrit 被配置为需要提交消息中的 Change-Id。当 merge 提交被推送时,所有后续提交都将取决于 merge 提交——因为没有更改 ID。那么不将更改 Id 包含到 merge 提交中的目的是什么?

最佳答案

Git 中的潜在问题是 commit-msg 钩子(Hook)不会被调用用于没有冲突的 merge 提交。

但是,prepare-commit-msg 会为(任何) merge 提交调用。因此,我目前为使 Gerrit 的 Change-Id 也添加到没有冲突的 merge 提交而做的是使用这样的 prepare-commit-msg Hook :

#!/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

检查 .git/MERGE_MSG 确保在修改 merge 提交时不会调用 commit-msg,因为在那种情况下,Git 会直接调用该钩子(Hook)反正。请注意,对于冲突的 merge 提交,此方法将导致 commit-msg 被调用两次,一次作为此 prepare-commit-msg 的一部分在提交冲突解决方案后调用 commit-msg 时 Git 会 Hook 一次,但这不会导致任何问题,因为 Gerrit 的 commit-msg Hook 会检查 Change-Id 已经添加了,如果是这样就不再添加了。

如果你现在问自己为什么 Gerrit 不简单地只使用 prepare-commit-msg 钩子(Hook)来添加 Change-Id,我想这只是以防止用户意外删除提交消息中的 Change-Id。在编辑器关闭后将它添加为 commit-msg Hook 的一部分会更安全。

关于git - 为什么 Gerrit 不将 change-id 包含到 merge 提交中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com