2016-05-23 14 views
2

Ich verwende das Microsoft.TeamFoundationServer.Client NuGet-Paket für einige benutzerdefinierte Skripts. Ich möchte Zweige in meiner TFS-Quellcodeverwaltung in VSTS erstellen, aber ich finde keine Funktionalität in diesem Paket, um irgendeine Art von Verzweigung zu erstellen, egal ob in TFVC oder Git. Fehle ich etwas oder ist das Paket?Wie kann ich das Microsoft.TeamFoundationServer.Client NuGet-Paket verwenden, um eine Verzweigung in der TFS-Quellcodeverwaltung zu erstellen?

Antwort

0

Angenommen, Sie verwenden .NET client libraries for Visual Studio Team Services (and TFS). Für TFVC müssen Sie "Microsoft.TeamFoundation.VersionControl.Client" verwenden. Im Folgenden finden Sie den Code ein Beispiel:

using System; 
using System.Collections.Generic; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 

namespace ConsoleApplica 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string URL = "https://xxxxx.visualstudio.com/"; 
      TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(URL)); 
      VersionControlServer vcs = ttpc.GetService<VersionControlServer>(); 
      string sourcepath = "$/ProjectNmae/SourceBranch"; 
      string targetpath = "$/ProjectNmae/TargetBranch"; 
      vcs.CreateBranch(sourcepath,targetpath,VersionSpec.Latest); 
     } 
    } 
} 

Update: Für "Microsoft.TeamFoundationServer.Client", es Zugriff auf VSTS über REST-API. Die Rest-API für TFVC und Git kann jedoch nur die Zweige für jetzt abrufen, sie kann keine Verzweigung erstellen. So können Sie die Methode in "Microsoft.TeamFoundationServer.Client" entweder nicht anzeigen.

Integration mit Team Foundation Server 2015 und Visual Studio Team Dienste von Desktop-basierten, ASP.NET und anderen Windows-Anwendungen. Bietet über öffentliche REST-APIs Zugriff auf Versionssteuerung, Arbeitsaufgabenverfolgung, Build und .

+0

mit diesem Code tatsächlich für Legacy-TFS ist. Ich benutze die neueren Pakete für vsts, und der Code hier existiert nicht in diesen Paketen –

+0

@AlexMarshall Sorry für Ihre Frage nicht sorgfältig überprüft. Ich habe meine Antwort aktualisiert. –

+0

eine Idee, wenn diese Funktion hinzugefügt wird? Mein Team verwendet Powershell, um den Großteil unseres Scrum-Prozesses zu skripten, um den Overhead zu reduzieren, und wir müssen die Möglichkeit haben, Zweige programmatisch zu erstellen –

0

Für ein VSTS GIT Repo können Sie einen Zweig erstellen, indem Sie Microsoft.TeamFoundation.SourceControl.WebApi.GitHttpClient und eine 2 der Refs-Methoden verwenden.

Wenn Sie die XHR-Anfragen in Ihrem Browser-DevTools auf VSTS VisualStudio.com überprüfen, während Sie einen Zweig erstellen, können Sie sehen, wie sie es tun.

  • Zuerst erhalten sie die neuesten id aus der Quelle Zweig
  • Dann begehen sie ein Refs

zuerst die Quelle Zweig Sie Ihr neues möchten finden modifizieren senden von der Nutzung der GetRefsAsync stützen. https://www.visualstudio.com/en-us/docs/integrate/api/git/refs#just-branches

Mein Beispiel Ich möchte von Master abzweigen.

(dieses Beispiel wurde in einer Konsolenanwendung geschrieben, so ignoriert die GetAwaiter(). GetResult(), wenn Sie den Code in einer Asynchron-Methode ist)

var client = new GitHttpClient(uri, creds); 
var masterRefs = client.GetRefsAsync(repo.Id, filter: "heads/master").GetAwaiter().GetResult(); 
var masterRef = masterRefs.FirstOrDefault(x => x.Name == "refs/heads/master"); 

Dies gibt Ihnen die neuesten id verpflichten um den Zweig zu gründen.

Dann ein Refs ändern senden, um die ObjectId vom masterRef als New OBJECTID https://www.visualstudio.com/en-us/docs/integrate/api/git/refs#modify-one-or-more-refs

GitRefUpdate newRef = new GitRefUpdate 
{ 
    Name = "refs/heads/your-new-branch", 
    NewObjectId = masterRef.ObjectId, 
    OldObjectId = "0000000000000000000000000000000000000000", 
}; 
// create branch 
var updateResult = client.UpdateRefsAsync(new[] { newRef }, repo.Id).GetAwaiter().GetResult();