我正在创建默认合并窗口的克隆,以添加功能。
我已经在下面的命令网格中有一个合并候选人:
MergeCandidate[] candidates = tfs.GetMergeCandidates(edtSelectedSource.Text, cbxTargetBranchs.Text);
现在,用户选择了一个或多个候选人,我需要将它们合并。
但是TFS API VersionControl.Merge需要源路径和目标路径。
首先,我的问题是,我需要迭代每个候选人并逐个合并其变更集的每个文件? 其次,我如何从变更集中获取目标路径?
答案 0 :(得分:3)
首先,我已经使用TFS API进行了大量编程,但合并是我永远不会盲目信任自动化的东西。合并冲突最好由人类来处理。是的,它很痛苦,并且在许多情况下可以自动化,但在许多其他情况下 - 事情可能会非常糟糕。在生产分支上这样做之前,我会三思而后两次。
以下是一些有用的提示:
您需要创建一个临时工作区。工作区是一切都在发生的沙箱。工作区可以包含文件,因此也可以包含与之关联的文件位置。工作区项目具有丰富的元数据。
查看Workspace和WorkspaceInfo类。
然后看一下工作区客户端:
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.item.aspx
答案 1 :(得分:0)
只要更改集是连续的,您就可以在单个合并调用中执行此操作。如果它们不连续,则需要为每个连续块提交n个合并。假设他们选择变更集10,15和20并且这些是连续的(即在该范围之间没有其他候选者)然后您将提交版本从10开始并且版本为20的合并。
就路径而言,您希望使用传递给QueryMergeCandidates的那些,并且您还要指定完整的递归类型。