带跟踪特征分支的Gerrit?

时间:2016-05-23 12:17:42

标签: git gerrit

我们(git / gerrit newbs)正试图将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
  6. 进行审核

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

    gerrit手册建议修改你想再次推送的提交。这似乎很复杂且容易出错。

    如果用户从不将他的更改推送到远程仓库,这一切都有效,因为在推送审查之前,gerrit没有看到更改。但这正是我们不喜欢的。

    似乎可以对功能分支使用不同的repo,这样gerrit永远不会看到重复的更改ID,但这似乎又是一种不必要的复杂功能。

    有没有办法安全优雅地做我们想要的事情?

2 个答案:

答案 0 :(得分:2)

如果您至少运行Gerrit 2.11,则fixissue 1195可以受益,take into account target branch when determining new changes to open启用create-new-change-for-all-not-in-target选项。

答案 1 :(得分:1)

您正在尝试使用拉取请求工作流程来处理Gerrit(如Github,Bitbucket,...)。

我们刚刚创建了一个Gerrit客户端工具来执行此操作:

https://github.com/Cosium/vet

使用vet,您可以拥有功能分支,并且可以添加任意数量的提交,而无需修改或重新定义功能分支。