TFS中的跨分支合并?

时间:2008-09-09 20:26:48

标签: version-control tfs merge branch

是否可以合并到TFS中不是直接父母或子女的分支?我怀疑答案是否定的,因为这是我在使用它时所经历的。但是,似乎在某些时候,当有不同的功能可能有不同的审批周期时(例如,功能一可能在功能二之前被批准),它将非常有用。当我们有生产分支时,我们必须将某个功能合并到前一个分支中,这样我们才能在下一个完整版本之前发布。

我们目前的分支策略是在主干(或我们称之为主线)中开发,并创建一个分支来稳定并发布到生产。然后,此分支可用于创建修补程序和其他内容,而主线可以分散即将发布的功能。

可以使用哪些技术来缓解诸如上述方案之类的情况?

7 个答案:

答案 0 :(得分:19)

我同意Harpreet的说法,你可能想重温一下如何设置分支结构。但是,如果你真的想要执行这种类型的合并,你可以通过一种称为无基础合并的东西。它从tfs命令提示符

运行
Tf merge /baseless <<source path>> <<target path>> /recursive

可以找到有关无基础合并的其他信息here

我还发现这个文档在构造我们的tfs分支结构时非常有用 Microsoft Team Foundation Server Branching Guidance

答案 1 :(得分:8)

tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch

答案 2 :(得分:2)

您可能想重新审视分支策略。你如何获得生产分支?您是否正在合并来自开发分支,回归测试的所有代码,然后为修复创建生产分支?或者你是在后备箱上开发,然后创建生产分支来稳定和释放?第二种方法会产生您所描述类型的问题。如果您正在使用第一种方法 - 主干应该仅用于已经在测试分支上构建的内容然后合并,您将更少地遇到这种情况。根据这种方法,如果你仍然遇到这个问题,可能是因为你的开发工作量非常大,你可能需要一个相对复杂的分支策略,包括分支和推广层。

答案 3 :(得分:1)

AFAIK只要分支是从同一个原始文件夹创建的,就可以这样做。

  • 躯干/
  • 支链/ - / feature1(从主干分支) - / feature2(从主干分支)

如果你这样做,那么你也应该能够在feature1和feature2之间进行合并。

虽然我对TFS的分支/合并经验让我想要更多。我希望我们有SVN。

答案 4 :(得分:1)

是的,您可以进行无基础合并,但只能从命令行(tf.exe)进行。

答案 5 :(得分:1)

TFS将允许您与不是父/子的分支合并 - 这些被称为无基础合并。请参阅以下链接:

From MSDN

From the TFS Team via CodePlex

我们通常会对开发分支进行重大或不稳定的更改。如果接近我们其中一个产品的主要版本,几乎所有更改都将在分支机构上完成。

答案 6 :(得分:0)

我离TFS专家还很远,但是我认为您可以合并兄弟姐妹,而且我认为这不是毫无根据的合并。

我们从主分支(分支名称“ main”)分支了一个功能(分支名称“ feature”),然后我需要在分支分支中进行一些工作,该分支也从主分支(分支名称“ dev”)分支”)。我认为feature和dev分支是同级兄弟,因为它们都来自同一父级。我将功能合并到开发人员,所有文件(14000)被标记为merge,一些文件被标记为merge,edit。我无法取消(Visual Studio会挂起),因此我接受了合并。然后,我将dev合并到main,然后将main合并到Feature,再次将14000个文件标记为要合并。我真的很沮丧,担心这种情况还会持续下去。

这时我们做了一个测试项目。我们设置了main,然后从main分支了dev和feature。我们重复上述步骤,结果相同。一旦我们完成了从主要功能到功能的合并,所有以后的合并只会显示已编辑的文件。

经过小小的测试,我完成了从main到feature的合并。就像测试一样,我们的合并现在仅显示已编辑的文件。我们可以将开发人员转到功能部件,将功能转到主要人员,将主要人员转到开发人员,等等。

我确实注意到分支所有文件日期均已修改。也许这是一个问题?

相关问题