6

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

我尝试了无根据的合并 -在 TFS 中,如何对特定变更集进行无根据的合并?- 这告诉我没有要合并的更改。

我想要实现的是这样的 TFS :可以将搁置集恢复到另一个位置吗?除了变更集。

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

我的结构看起来像:

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

问题是如何在不通过 X 的情况下将 C2 从 Y 获取到 Z?

4

2 回答 2

3

我们有类似的情况,但在我们的例子中,我们从多个分支毫无根据地合并到一个“scratch”构建分支。我们能够做到这一点的唯一方法是编写我们自己的利用 TFS API 的实用程序。

好消息是,您应该能够在不到几百行代码中完成这项工作。

基本步骤是:

  • 连接到 TFS
  • 获取 VersionControlServer 的一个实例(我们称之为 VCS)
  • 创建工作区
  • 做一个VCS.GetChangeset()
  • 遍历Changes以获取已更改的项目列表
  • 对从源分支到目标分支的每个项目执行 a Workspace.Merge
  • 签入目标分支中的项目。
  • 删除工作区
于 2010-09-13T12:43:31.683 回答
2

使用 Visual Studio 更简单。

In Visual studio use the Source Control Merge wizard to merge the unrelated branches.

It has an option to merge selective changesets. The only restriction is that the changesets must be consecutive

于 2017-11-16T17:36:15.047 回答