2016-05-23 212 views
0

我们(git/gerrit newbs)试图使用具有特征分支的gerrit。我们试图实施的工作流程如下:Gerrit跟踪功能分支?

  1. 用户创建一个功能分支,用git push -u origin users-branch直接将其推送到远程回购(无评论)。
  2. 由于变更堆积在主分支中,用户确实需要git pull --rebase origin master(需要--rebase,否则git创建合并提交,并且合并提交不能通过gerrit推送)。
  3. 用户继续将其更改推送到远程回购git push --force origin users-branch--force需要,因为在上一阶段--rebase;我正在寻找更好的方法来执行此操作)。
  4. 其他用户可以通过推送自己的更改来为功能分支做出贡献。
  5. 当功能准备就绪后,用户将其推入git push origin HEAD:refs/for/master进行查看。

最后一步不起作用,因为在任何阶段推送给gerrit的提交都无法再次推送。

gerrit手册建议修改您想要再次提交的提交。这看起来很复杂且容易出错。

如果用户从不将他的更改推送到远程回购,这一切都可以正常工作,因为gerrit在被推送审查之前不会看到更改。但这正是我们不喜欢的。

对功能分支使用不同的回购似乎是可能的,例如gerrit从不会看到重复的变更ID,但这又似乎是不必要的复杂化。

有没有办法做到我们想要的安全和优雅?

+0

*合并提交不能通过gerrit推送*您可以重新配置这个。但是,也许你不想要那个,我会理解的 –

+0

如果你不想(大多数)承诺被审查,那么使用gerrit有什么意义?我认为这是它最大的优势之一,不允许任何人推动任何东西,除非它已被审查 –

+0

@TimCastelijns我希望所有提交到主和发布分支进行审查,但不是功能分支。 –

回答

1

如果您运行的是至少Gerrit 2.11,则可以使用fix代替issue 1195,并启用create-new-change-for-all-not-in-target选项至take into account target branch when determining new changes to open

+0

谢谢,这可能是。但是这个选项在项目设置中是灰色的(实际上所有选项都是)。由管理员禁用? –

+0

这听起来好像没有任何您所在的组具有项目的“所有者”权限。 – sschuberth

+0

是的,显然我拥有git repo的完全权限,但不适用于位于其上的gerrit项目。要求管理员改变它,只要我有机会测试它就会报告。 –

0

您正在尝试使用拉请求工作流(与Github,Bitbucket等一样)在Gerrit上工作。

我们刚刚创建了一个格里特客户端工具来做到这一点:

https://github.com/Cosium/vet

随着vet,你可以有功能分支,你可以添加任意数量的提交没有修订或重订的特性分支。