2016-05-23 12 views
2

私はいくつかのカスタムスクリプトにMicrosoft.TeamFoundationServer.Client NuGetパッケージを使用しています。 VSFSのTFSソース管理にブランチを作成したいのですが、TFVCかGitかどうかにかかわらず、このパッケージ内のどの種類のブランチも作成できないようです。私は何かを逃しているのですか、パッケージですか?Microsoft.TeamFoundationServer.Client NuGetパッケージを使用してTFSソース管理にブランチを作成するにはどうすればよいですか?

答えて

0

.NET client libraries for Visual Studio Team Services (and TFS)を使用しているとします。 TFVCの場合、 "Microsoft.TeamFoundation.VersionControl.Client"を使用する必要があります。次のコードサンプルです:それは、REST APIを介してVSTSへのアクセス、 "Microsoft.TeamFoundationServer.Client" の場合:

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); 
     } 
    } 
} 

更新。しかし、TFVCとGit用のRest APIはブランチを作成できません。ブランチを作成することはできません。したがって、 "Microsoft.TeamFoundationServer.Client"の中のメソッドを見ることはできません。

Team Foundation Server 2015およびVisual Studioチームと統合 デスクトップベース、ASP.NET、およびその他のWindowsアプリケーションからのサービス。 パブリックREST APIを使用して、バージョン管理、作業項目の追跡、ビルド、および moreへのアクセスを提供します。

+0

新OBJECTIDとしてmasterRefからのObjectIdを使用して修正する参考文献送ります。私はvstsのための新しいパッケージを使用しています、そして、そのコードは、それらのパッケージには存在しません。 –

+0

@AlexMarshall申し訳ありませんあなたの質問を慎重にチェックしなかった。私は私の答えを更新しました。 –

+0

この機能を追加する予定はありますか?私のチームはpowershellを使用してスクラムプロセスの大部分をスクリプト化してオーバーヘッドを減らし、分岐をプログラムで作成する必要があります –

0

VSTS GITリポジトリの場合、Microsoft.TeamFoundation.SourceControl.WebApi.GitHttpClientと2つのRefsメソッドを使用してブランチを作成できます。

ブランチを作成中にVSTS visualstudio.comのブラウザのdevtoolsでXHR要求を調べると、それらの動作を確認できます。彼らは最新のソースブランチ

  • からIDをコミット取得

    • まずそれから、彼らはレフリーが

    まずあなたがGetRefsAsyncを使用してからあなたの新しいをベースにするソース枝を見つけ修正送ります。 https://www.visualstudio.com/en-us/docs/integrate/api/git/refs#just-branches

    私の例では、から枝分かれしたいと考えています。

    この例では)コンソールアプリで書かれたので、(GetAwaiterを無視した。のgetResult()あなたのコードは、非同期メソッドにある場合)

    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"); 
    

    これはあなたに、最新のコミットIDを与えますから支店を作る

    その後、このコードは、従来のTFSのために実際にある 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(); 
    
  • 関連する問題