git - 有没有办法强制 Gerrit 将分支中的所有提交推送到代码审查?

标签 git gerrit

Gerrit 将 merge 提交历史记录中较早且位于存储库的不同“分支”中的潜在未审核更改。这是一个例子:

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

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

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

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

非常感谢。

最佳答案

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

尝试此解决方法 - 在步骤 2 之后添加步骤 2a:

2a。再次 checkout 开发分支

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

另一个想法 - 您对该项目使用什么 merge 策略?如果它是cherry-pick,我会尝试将其更改为merge-if-needed,或者如果它不是cherry-pick,我会尝试将其更改为cherry-pick。我相信 merge 策略之间的行为是不同的。

关于git - 有没有办法强制 Gerrit 将分支中的所有提交推送到代码审查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473074/

相关文章:

svn - 为什么在 Mercurial 中分支和 merge 比在 Subversion 中更容易?

ruby-on-rails - 如何从电脑、heroku、github上彻底删除ruby on rails项目

git - "urlopen error [Errno -2] Name or service not known"是什么意思?

Python 日志行未保留

http - 你如何在 Golang 中使用摘要身份验证进行 HTTP POST?

git - 是否可以在 git diff 中配置临时文件夹?

使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

linux - 运行 "fatal: unable to create threaded lstat"命令时出现 "git status"错误

git - Gerrit 能否代替 Trac 进行问题跟踪和代码浏览

git - 如何将 Gerrit 更改移动到不同的分支?