2

Gerrit 将合并提交历史中较早且位于存储库的不同“分支”中的可能未审查的更改。这是一个例子:

  1. 结帐 gerrit 分支devel
  2. 创建 file1.txt,添加,提交,推送到refs/heads/temp_branch
  3. 创建 file2.txt,添加,提交,推送以refs/for/devel进行代码审查

当 file2.txt 被接受并合并时,file1.txt,因为它在上游而不是在标记为正在审查的单独更改分支中,也会被合并。这可能是非常有问题的,我能想出的唯一解决方案是强制对推送到每个分支的每个更改进行代码审查。这并不理想,因为您可能希望某些分支有一组批准者,或者没有代码审查(对于某些代码交换?)。

这里的解决方案是强制将历史记录中的每个提交都放入代码审查中,就像 file1.txt 没有被推送到同一存储库中的不同分支一样。

Gerrit 中是否存在强制执行此规则的设置?谁能想到一个允许自由推送refs/heads/而不冒污染其他分支的工作流程?

非常感谢。

4

1 回答 1

2

我怀疑您看到了这种行为,因为第 3 步中的提交将第 2 步的提交作为其父提交。除非所有父项都已提交,否则您无法提交提交。我同意你的看法,这似乎是 Gerrit 中的一个错误——它应该拒绝提交,直到提交第 2 步。

试试这个变通方法 - 在第 2 步之后添加第 2a 步:

2a. 再次检查开发分支

如果提交将发送到 2 个不同的分支,那么它们是线性的没有意义。

另一个想法 - 你在这个项目中使用什么合并策略?如果它是cherry-pick,我会尝试将其更改为merge-如果需要,或者如果它不是cherry-pick,我会尝试将其更改为cherry-pick。我相信这里的行为在合并策略之间是不同的。

于 2012-02-28T15:55:43.453 回答