我们目前使用 Gerrit,用于一个由大约十几个开发人员组成的团队。
这是我们当前的工作流程:
1. 开发人员从 master 分支
2. 开发人员在他们的本地分支上工作
3. 开发人员推送到 gerrit,它通过在 refs/for/master 中包含推送的提交来保护 master 分支。(如果您不知道,gerrit 也是一个存储库管理器。)
4. Gerrit 调用 Jenkins,在变更集上运行单元测试(和 Selenium 测试)。如果失败,提交将被踢回开发人员。否则,詹金斯 +1s 提交。
5. 审阅者查看提交并对其 +1
6. 高级审阅者查看提交并对其 +2 并且变更集被合并到 refs/head/master(即实际分支)
我们喜欢这个工作流程;这很棒。它为我们的开发带来了美妙且急需的流程和纪律,并从我们之前被忽视和忽视的代码审查瓶颈中列出了待办事项,每个人都为此感到高兴。
x - 中场休息 - x
我们现在希望将我们的任务管理转移到 Jira。在我设置它的同时,我还设置了 Crucible,因为它似乎是让代码审查成为整个 shebang 的一部分的自然集成。我无法做的是在我们喜欢的上面重现我们的工作流程。借助 Jira/Crucible 集成,由于我们不再拥有存储库的一切看门人(而且我们不想为 Atlassian 的 Stash 付费),我们会将代码推送到 Bitbucket。我们不能再直接在 master 上工作,因为坏代码将不再是“门控”,而是在通过任何测试或代码审查之前由开发人员合并到 master 中。将其排除在主分支之外的唯一解决方案似乎是分叉。好吧,这很烦人,但我可以接受。但是我如何从开发人员那里获得提交' s fork 在通过代码审查后合并到主分支?这就是我想从做过任何类似事情的人那里听到的,或者根据我的情况知道如何完成它。
所有这一切的替代方法是尝试使用https://github.com/hobbs/jirret强制 Jira 和 Gerrit 之间的集成,但它使用 Jira 仍然支持但不再进行任何开发的 XML RPC。