gpt4 book ai didi

git - 自动 rebase gerrit 更改

转载 作者:太空狗 更新时间:2023-10-29 13:40:39 44 4
gpt4 key购买 nike

我当前的开发环境包括一个 Git/Gerrit 设置,它运行多个 Jenkins 作业来验证提交的更改。

Gerrit 中的提交类型设置为“仅快进”。

“问题”:

  1. 更改 A 被推送到 gerrit,触发基于 Jenkins 的验证构建
  2. Change B 被推送到 gerrit,触发基于 Jenkins 的验证构建
  3. Change A 获得“已验证 +1”(来自 Jenkins)
  4. Change B 获得“已验证 +1”(来自 Jenkins)
  5. 更改 A 已提交

(信息:更改 A/B 是同一分支上的提交,并且具有相同的父提交 ID)

此时Change B不能再提交了,因为它的parent没有指向分支的HEAD。因此,更改 B 的开发人员必须手动对其更改进行 rebase 。 (这个 rebase 创建了一个新的补丁集,它会自动触发 Jenkins 作业)

我怎样才能摆脱这个手动步骤?

于是我发现我可以将Gerrit项目的提交类型改为“Rebase if Necessary”(我也可以告诉Gerrit自动解决冲突)。这里的问题是,在 rebase 并解决潜在的冲突之后,更改被 merge 而无需重新运行 Jenkins 验证作业。无法检测到可能由于 rebase 或解决冲突而引入的潜在错误。

有没有办法在变更过时时自动 rebase (在示例变更 B 中)并重新运行测试?

最佳答案

这不可能开箱即用,但您可以编写一个服务来监听事件(例如通过 stream-events SSH command )并在将更改提交到同一分支时重新设置发往特定分支的打开更改.为此编写一个插件应该也相当容易,但显然这也会产生更紧密的耦合。

关于git - 自动 rebase gerrit 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28321598/

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