2013-02-08 50 views
0

我正在创建默认合并窗口的克隆,以添加功能。API - 如何以编程方式合并.VersionControlServer.GetMergeCandidates返回的合并候选列表?

我已经有一个网格中的合并候选者从下面的命令:

MergeCandidate[] candidates = tfs.GetMergeCandidates(edtSelectedSource.Text, cbxTargetBranchs.Text); 

现在,用户选择1个或以上的候选人,我需要将它们合并。

但是TFS API VersionControl.Merge需要源路径和目标路径。

起初,我的问题,我需要迭代每个候选人,并逐一合并其变更集的每个文件? 其次,我如何从变更集中获取目标路径?

回答

0

只要变更是连续的,你可以做一个单一的合并呼叫。如果它们不连续,则需要为每个连续块提交n个合并。假设他们选择变更集10,15和20,并且这些是连续的(即在该范围之间没有额外的候选人),那么您将提交版本从10和版本到20的合并。

就路径而言,你想使用你传递给QueryMergeCandidates的那个,你也想要指定完整的递归类型。

+0

现在我明白了API的逻辑。在合并方法中,我需要将ChangesetVersionSpec versionFrom和versionTo放在你说的:==>合并(sourcePath,targetPath,ChangesetVersionSpec(changeSetIdStart),新的ChangesetVersionSpec(changeSetIdEnd),LockLevel.None,RecursionType.Full,MergeOptionsEx.None);谢谢你回答泰勒。 – Denny 2013-02-13 11:47:29

3

首先,我已经用TFS API做了大量的编程,但合并是我永远不会盲目信任自动化的东西。合并冲突最好由人处理。是的,这很痛苦,而且在许多情况下可以自动化,但在其他许多情况下,事情可能会非常糟糕。在制作分支之前,我会再考虑两次,然后再考虑两次。

下面是一些提示,应该帮助:

您需要创建一个临时工作区。工作区是一切发生的沙箱。工作区可以有文件,因此文件位置与之相关联。工作区项目具有丰富的元数据。

查看Workspace和WorkspaceInfo类。

再看看在空间客户端:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.item.aspx