Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API-如何以编程方式合并.VersionControlServer.GetMergeIndications返回的合并候选列表?_Api_Tfs - Fatal编程技术网

API-如何以编程方式合并.VersionControlServer.GetMergeIndications返回的合并候选列表?

API-如何以编程方式合并.VersionControlServer.GetMergeIndications返回的合并候选列表?,api,tfs,Api,Tfs,我正在创建默认合并窗口的克隆,以添加功能 我已经从下面的命令在网格中合并了候选对象: MergeCandidate[] candidates = tfs.GetMergeCandidates(edtSelectedSource.Text, cbxTargetBranchs.Text); 现在,用户选择了一个或多个候选项,我需要合并它们 但是TFS API VersionControl.Merge需要源路径和目标路径 首先,我的问题是,我需要逐一迭代每个候选项并合并其变更集的每个文件? 第二

我正在创建默认合并窗口的克隆,以添加功能

我已经从下面的命令在网格中合并了候选对象:

  MergeCandidate[] candidates = tfs.GetMergeCandidates(edtSelectedSource.Text, cbxTargetBranchs.Text);
现在,用户选择了一个或多个候选项,我需要合并它们

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

首先,我的问题是,我需要逐一迭代每个候选项并合并其变更集的每个文件?
第二,如何从变更集中获取目标路径

首先,我已经用TFSAPI进行了大量编程,但是合并是我永远不会盲目相信自动化的事情。合并冲突最好由人来处理。是的,这是痛苦的,在许多情况下可以自动化,但在许多其他情况下,事情可能会变得非常糟糕。在对生产分支执行此操作之前,我会三思而后行

以下是一些应该有所帮助的提示:

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

查看Workspace和WorkspaceInfo类

然后查看工作区客户端:


首先,我已经用TFS API进行了大量编程,但是合并是我永远不会盲目相信自动化的事情。合并冲突最好由人来处理。是的,这是痛苦的,在许多情况下可以自动化,但在许多其他情况下,事情可能会变得非常糟糕。在对生产分支执行此操作之前,我会三思而后行

以下是一些应该有所帮助的提示:

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

查看Workspace和WorkspaceInfo类

然后查看工作区客户端:


只要变更集是连续的,就可以在一次合并调用中完成。如果它们不是连续的,则需要为每个连续块提交n个合并。假设他们选择了变更集10、15和20,并且这些变更集是连续的(即在该范围内没有其他候选变更),那么您将提交一个版本From为10、版本On为20的合并


就路径而言,您需要使用传递到QueryMerge候选者中的路径,并且还需要指定完整的递归类型。

只要变更集是连续的,就可以在单个合并调用中完成。如果它们不是连续的,则需要为每个连续块提交n个合并。假设他们选择了变更集10、15和20,并且这些变更集是连续的(即在该范围内没有其他候选变更),那么您将提交一个版本From为10、版本On为20的合并


就路径而言,您需要使用传递到QueryMerge候选者中的路径,还需要指定完整的递归类型。

现在我了解了api的逻辑。在Merge方法中,我需要将ChangesetVersionSpec versionFrom和versionOn设置为:==>Merge(sourcePath、targetPath、ChangesetVersionSpec(changeSetIdStart)、newchangesetVersionSpec(changeSetIdEnd)、LockLevel.None、RecursionType.Full、mergeoptionEx.None);谢谢泰勒的回答。现在我理解了api的逻辑。在Merge方法中,我需要将ChangesetVersionSpec versionFrom和versionOn设置为:==>Merge(sourcePath、targetPath、ChangesetVersionSpec(changeSetIdStart)、newchangesetVersionSpec(changeSetIdEnd)、LockLevel.None、RecursionType.Full、mergeoptionEx.None);谢谢你回答泰勒。