2016-12-14 50 views
2

我倒是希望更新施加到分支編程的標籤。在尋找可以做到這一點的方法時,我找到了VersionControlServer.CreateLabel() - Method。 https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver.createlabel(v=vs.120).aspx如何通過使用VersionControlServer.CreateLabel()[C#]來更新TFS標籤[TFS]

我試了一下這樣的,但它似乎doesn't工作:

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(tfsuri)); 

    var vcs = tfs.GetService<VersionControlServer>(); 

    string labelscope = "$/MyProjects/" + machinenumber; 

    var specifiedBranch = vcs.QueryLabels(label, labelscope, null, true); 

    string branch = specifiedBranch[0].Items[0].ServerItem; 

    ItemSpec newItemSpec = new ItemSpec(branch, RecursionType.Full); 

    string newItem = specifiedBranch[0].Items[0].ServerItem; 

    newItemSpec.Item = newItem; 

    VersionSpec versSpec = new LabelVersionSpec(label); 

    LabelItemSpec newLabelItemSpec = new LabelItemSpec(newItemSpec, versSpec, false); 

    LabelItemSpec[] newLabelItemSpecList = new LabelItemSpec[1] { newLabelItemSpec }; 

    string labelOwner = vcs.AuthenticatedUser; 

    string labelName = label.Insert(6, "ed"); 

    VersionControlLabel labelToUpdate = new VersionControlLabel(vcs, labelName, labelOwner, branch, null); 

    vcs.CreateLabel(labelToUpdate, newLabelItemSpecList, LabelChildOption.Replace); 

我究竟想要做的是從「部署」到「部署」更新舊標籤名稱。我知道如何使用TF.exe執行此操作,但它應該在沒有TF.exe的情況下運行。

有沒有人有代碼示例如何使用CreateLabel() - Methode更新現有標籤?

- 更新 -

我改變

LabelItemSpec newLabelItemSpec = new LabelItemSpec(newItemSpec, versSpec, true); 

現在針對同一分支建立的新標籤。我不能用VersionControlServer.DeleteLabel刪除舊標籤。然後我得到我正在尋找的結果,但我仍然想知道如何正確更新。

回答

2

重命名標籤不TFS支持。您只能根據要刪除的舊標籤創建新標籤。詳情請參閱此鏈接:Rename Label in Team Foundation Server

您也可以在VersionControlLabel Class進行驗證。

名稱獲取此標籤的名稱。

它只能夠得到名稱沒有設置名稱。


更新

對於VersionControlServer::CreateLabel MethodLabelChildOption options,有三種選擇:

  • 替換:您在申請中指定的任何項目這已在標籤中將被你所擁有的東西取代指定。 凡是不是在標籤已經將被添加到 標籤,而不是由您的要求修改現有的項目將 保持原樣。
  • 合併:請留下您的請求中但已存在於標籤中的未修改項目。您的請求中不是
    中的任何項目將被添加到標籤中,標籤中未指定的現有項目
    將保持
    不變。
  • 失敗:標籤具有範圍的概念。 「失敗」選項表示,如果
    至少有一個名稱相同的名稱存在於範圍內,並且 低於新標籤的範圍,則創建或更新標籤的呼叫應該失敗。

更新標籤只意味着更新的itemSpecs參數,這意味着包括在標籤中的項目規格。所以它用於更新 ItemSpec爲標籤 - 哪些文件,我們要標記的文件夾。

+0

謝謝您的回覆。我之前和之前曾經寫過這篇文章,我發現了一種通過刪除舊標籤並設置新標籤來解決問題的方法。所以對我來說沒問題。但是「創建或更新」是什麼意思?正如在描述行中所寫:https://msdn.microsoft.com/en-us/library/bb138611(v=vs.120).aspx。我會認爲「更新」意味着我可以更新標籤名稱。 – L4c0573

+1

已更新我的回答供您參考。 –

+0

好的非常感謝你!現在對我來說很清楚。 – L4c0573