2013-02-08 49 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