我们正在考虑将SVN从TFS迁移到TFS,因此我正试图在TFS中找到适合我们需求的正确工作流程。在那里有很多分支机制的讨论,但我见过的大多数有一个共同点,不符合我们的需求;几乎所有的分支机制都假设你的分支是可测试的。寻找支持集成测试分支的TFS分支机制
所以我们从主干创建一些特性分支:
Trunk --(branch)--> Feature1
Trunk --(branch)--> Feature2
Trunk --(branch)--> Feature3
在我们的例子中,我们正在“功能”分支,每个分支的特征可以进行单元测试,但能不能是 QA测试。这是因为每个功能分支需要拥有自己的数据库实例和一个Web服务器,而我们显然没有这方面的资源。所以我们将我们的功能分支合并回“测试”分支。我们的QA团队随后在测试分支中测试全部功能(因为它们已准备就绪)。
Feature1 --(merge)--> Testing
Feature2 --(merge)--> Testing
Feature3 --(merge)--> Testing
现在,这是事情变得陌生...... 注意,特性分支没有真正诠释,他的同一层“测试”分支。在SVN我猜你会称这是一个“毫无根据”合并,其不认为我TFS支持...
在QA测试,一个特定的功能可能会失败的测试,或更普遍的业务将决定“从来没有想过,我们不希望Feature2发布此版本,我们将等到下一个版本发布。“
某些时候,如果某个功能已通过质量保证并且业务已经通过验证,我们会将我们接受的功能与Trunk(发布/制作)合并。
Feature1 --(merge)--> Trunk
Feature3 --(merge)--> Trunk
然后我们建立我们释放掉干线(以及其版本号标记的话)
所以,我在找的是一种方法,使在TFS一些类似的工作。既然你似乎只能够合并的祖先,我可能设置此类似:
Trunk
|- Testing
|- Feature1
|- Feature2
|- Feature3
而且从功能分支合并测试。但是,那么我需要只有合并来自Feature1和Feature3的测试版本到Trunk,忽略Feature2的修订版本。这似乎是手工检查每个变化以查看它来自哪个分支的一项非常单调乏味的容易出错的工作。这就是为什么在我们的SVN方案中,我们会将我们的功能分支直接合并到主干。
好像有功能分支必须重新集成到一个通用的测试分支应该是相当普遍的,但我想我没有看到一个简单的方法来获取源自特定叶的变更集合并的下一步。
任何人有任何输入?我们当然也愿意修改我们的分支机制。我们之前完成的工作恰好在SVN中正常工作。我怀疑它在git中也不会很难,因为你实际上可以将整个功能压缩到单个提交中,并且只是将该提交合并到任何其他分支。
感谢您的任何意见!
其他说明:
我们使用TFS 2010年我忘了提早。
另一个选项是将中的所有更改从测试分支中的功能中移除,然后再将其合并到Trunk。这将是SVN中的“反向合并”。我看到有一个tf.exe /rollback
命令,但它看起来像需要一个更改集编号。每个功能可能是多个变更集,所以我仍然没有看到一种方法来找出源自FeatureX合并的测试中的变更集列表...
请参阅[Visual Studio团队基础服务器分支指南2010](http://tfsbranchingguideiii.codeplex.com/) –