我当前的开发环境包含一个Git / Gerrit设置,该设置运行多个Jenkins作业以验证提交的更改。
Gerrit中的提交类型设置为“仅限快进”。
“问题”:
(信息: 更改A / B 是同一分支上的提交,并具有相同的父提交ID)
此时 更改B 不能再提交,因为其父级未指向分支的HEAD。因此, 更改B 的开发者必须手动修改其更改。 (此rebase创建一个新的补丁集,自动触发Jenkins作业)
如何摆脱这个手动步骤?
所以我发现我可以将Gerrit项目的提交类型更改为“必要时重新启动”(我也可以告诉Gerrit自动解决冲突)。这里的问题是,在重新定位和解决潜在的冲突之后,合并更改而不重新运行Jenkins验证作业。由于变基或冲突解决而可能引入的潜在错误无法被发现。
有没有办法自动更改更改(在示例 更改B 中)并重新运行测试,如果它已过时?
答案 0 :(得分:2)
这不是开箱即用的,但您可以编写一个侦听事件的服务(例如,通过stream-events SSH command)并在提交更改时重新定义发往特定分支的更改到同一个分支。为此编写插件应该相当容易,但这显然也会产生更紧密的耦合。
答案 1 :(得分:1)
如果您使用樱桃挑选功能,似乎可以完成。看到这个其他答案: Gerrit always rebase before submit patchset to avoid a merge commit