2011-04-19 119 views
3

我在TFS中有一个团队项目,每天提交任务。我想独立完成每项任务,然后在测试后将其合并到主线中。TFS分支与合并策略

目前有一个主分区和DEV分支,它是主要的一个孩子。在DEV分支中进行更改,然后在准备就绪时将其合并到MAIN中。这是通过“樱桃选择”合并完成的。我一直在阅读各地樱桃选择合并是不好的,你应该尽可能避免它们。

我有麻烦我的包裹周围分支和TFS合并头,想知道是否有人对如何实现在TFS这一目标的任何建议,而无需做樱桃挑合并。

任何帮助表示赞赏。

如果我离开了任何关键信息,请发表评论,我会编辑自己的帖子。

回答

3

我认为这Codeplex上的文件将是一个很大的帮助:

http://tfsbranchingguideiii.codeplex.com/

下载有几个PDF文件,规定了不同的方案和战略,并给予了Q值在不同的方法&一个。

您的场景的关键将是合并所有更改,直到从Dev到Main的指定版本。每次将代码签入Dev后,运行所有测试(开发人员将获得最新的Dev代码,然后在签入前运行所有测试)。理想情况下,如果在开发签入后,Dev分支中的构建成功,则合并到Main中将是一个好主意。经常从Dev合并到Main,并在每次签入后在Main中运行所有测试。

因此,即使开发商的某些片段独立工作,一旦检查到的Dev分支,他们基本上是说:“这个代码是准备进行整合。”当从Dev开始合并到Main时,你不再处理特​​定的作品 - 你合并了整个辣酱玉米饼馅。如果开发人员需要源代码控制进行半成品代码,他们应该使用TFS搁架并等待Dev完成,直到完成。

+0

目前,我们在DEV中检入日常更改。一旦变化准备好投入生产,它就会被合并到MAIN中。我面临的问题是,有时在新的更改之前签入的更改尚未准备好投入生产。这可以防止我合并到最新版本,并迫使我进行樱桃选择合并,因此我只能选择准备发布的更改。 – thiag0 2011-04-19 17:37:41

+0

然后选项包括:1)不检入代码,直到它准备好生产并针对同一生产版本的所有更改为止;或者2)更改分支策略,以便拥有两个“正在进行中”的分支 - 一个用于第一个版本,第二个版本的版本 - 它们不会合并到主干中,直到他们准备投入生产。后者听起来像是最适合你的情况的方法。 – Shawn 2011-04-20 00:07:52

+0

在这种情况下,我可以看到两种解决方案,因为它需要每周发布一次。方法1可以通过使用shelveset来存储tfs服务器上未准备好的更改来完成。方法2可以通过创建一个分支来完成,这些分支很可能会在下一个版本之前完成,另一个分支需要更长的时间才能完成。由于创建分支的成本,我认为你的第一个建议会更好。谢谢! – thiag0 2011-04-20 02:34:59

2

您可能会发现定音鼓软件的MergeMagician工具有趣。这是一个支持TFS(也是Subversion)的分支管理和自动化合并解决方案。您在分支之间创建发布/订阅关系,然后服务器自动进行合并。

MM可用于实现Shawn提到的TFS分支指南中讨论的所有模式。

仅供参考,它是一个商业工具。我不知道有哪些开源工具可以完成像TFS一样的工作。

瞧瞧吧http://www.timpanisoftware.com。主页上有一个很好的概览视频。