1

我正在尝试实现 Adam Dymitruk (http://dymitruk.com/blog/2012/02/05/branch-per-feature/) 所描述的工作流程。

我喜欢这种方法的地方在于功能分支的独立性。此分支中仅存在与该功能相关的代码。在 sprint 期间,可以根据不同的功能分支自由组合发布分支。亚当已经回答了一些问题,但我正在努力解决一些问题。

根据我的发现,发布和集成(开发)分支运行时间很长,可以在必要时重置?Dev 不断地从他们的特性分支合并到集成分支。已完成的功能将合并到发布分支。

  • 由于发布和集成分支是共享的(向上推),当它们被重置时会发生什么?其他开发者应该如何处理这个问题?当您想要取出某个功能时,应该重新组合发布分支。您是否需要先删除远程上的旧发布分支,而其他开发人员也需要先删除他们的发布分支?这似乎很麻烦。

  • 最好不要有一个长期运行的发布分支,而是创建一大堆不同的分支?

所以基本上,如何自由地重组一个分支(从而重写历史)在开发人员之间共享这个分支?

谢谢。

4

1 回答 1

0

如果您要使用此工作流程,我可以推荐Gerrit吗?

如果您使用这样的看门人,将特定功能与集成分支合并的结果会在合并之前进行测试。因此,如果某个功能通过代码审查和验证,您只需要“倒回”集成分支后来被丢弃。在这种情况下,使用git revert是合适的——因此集成分支实际上并没有向后移动,它只是获得了一个“反向”提交来删除该功能。

发布分支可以以同样的方式处理事情。

另一种选择是为每个发布/功能分支使用不同的名称。当您需要删除某些内容时,您会创建一个新integration-201301分支并停止在旧分支上工作。其他开发人员可以在闲暇时删除他们过去分支的副本。由于与旧分支相同的分支减去一个特性是一个全新的组合,但名称不同,因此不需要重写历史。

于 2013-01-25T21:47:07.690 回答