20

是否可以合并到 TFS 中不是直接父或子的分支?我怀疑答案是否定的,因为这是我在使用它时所经历的。但是,似乎在某些时候,当正在开发的不同功能可能具有不同的批准周期(即功能一可能在功能二之前获得批准)时,它会非常有用。当我们有生产分支时,这变得非常困难,我们必须将一些功能合并到以前的分支中,以便我们可以在下一个完整版本之前发布。

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

可以使用哪些技术来缓解上述情况?

4

7 回答 7

19

我同意 Harpreet 的观点,您可能想重新审视您是如何设置分支结构的。但是,如果您真的想执行这种类型的合并,您可以通过一种称为无基础合并的方法。它从 tfs 命令提示符运行,

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

可以在此处找到有关无根据合并的其他信息

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

于 2008-09-09T21:06:57.570 回答
8
tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch
于 2008-09-09T21:00:26.167 回答
2

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

于 2008-09-09T20:38:11.897 回答
1

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

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

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

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

于 2008-09-09T20:33:24.607 回答
1

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

于 2008-09-09T21:00:32.780 回答
1

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

来自 MSDN

来自 TFS 团队,来自 CodePlex

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

于 2008-09-09T21:05:50.647 回答
0

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

我们从主分支(分支名称“main”)分支出一个功能(分支名称“feature”),然后我需要在一个分支中进行一些工作,该分支也从主分支分支出来(分支名称“dev”)。我认为 feature 和 dev 分支是兄弟姐妹,因为它们都来自同一个父级。我将功能合并到 dev 并且所有文件(14000)都被标记为合并,一些被标记为合并,编辑。我无法取消(visual studio 只会挂起),所以我接受了合并。然后我将 dev 合并到 main,然后我将 main 拉到 feature,再次标记了 14000 个文件进行合并。我真的很沮丧,害怕这种情况会继续下去。

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

在我们的小测试之后,我完成了从 main 到 feature 的合并。就像测试一样,我们的合并现在只显示编辑过的文件。我们可以将 dev 转到 feature,将 feature 转到 main,main 到 dev,等等。

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

于 2019-05-31T15:07:14.187 回答