在TFS中,我如何挑选变更集到不相关的分支?

时间:2010-09-13 02:11:32

标签: tfs merge cherry-pick

我有一个非常混乱的TFS结构,我正在努力清理(感谢我的前任)。我现在有一种情况,我需要有选择地将变更集从一个分支带到另一个分支,在那里它们没有父/子关系,我不希望这些变更通过它们的共享主干。我怎么能这样做?

我尝试过无基础合并 - In TFS, how do I do a baseless merge on specific changesets? - 告诉我合并没有变化。

我想要实现的是TFS : Can a shelveset be restored to another location?,除了变更集。

在GIT中,我认为这将是一个简单的樱桃选择。

我的结构看起来像:

   Y-C1-C2-C3
  /
X-------------
    \
     Z

问题是如何在不通过X的情况下将C2从Y转换为Z?

2 个答案:

答案 0 :(得分:3)

我们有类似的情况,但在我们的例子中,我们从多个分支进行无基础合并到“临时”构建分支。我们能够做到这一点的唯一方法是使用TFS API编写我们自己的实用程序。

好消息是,您应该能够在不到几百行代码中完成此任务。

基本步骤是:

  • 连接到TFS
  • 获取VersionControlServer的实例(让我们称之为VCS)
  • 创建工作区
  • 执行VCS.GetChangeset()
  • 遍历Changes以获取已更改的项目列表
  • 对源分支到目的地分支的每个项目执行Workspace.Merge
  • 签入目的地分支中的项目。
  • 删除工作区

答案 1 :(得分:2)

使用Visual studio更简单。

在Visual Studio中,使用“源代码管理合并”向导合并不相关的分支。

它可以选择合并选择性变更集。唯一的限制是变更集必须是连续的