2016-09-06 8 views
1

プルリクエストを受け取り、レビューアを管理して完了させることができます(https://www.visualstudio.com/en-us/docs/integrate/api/git/pull-requests#get-a-pull-request)。ブランチには作業項目を必要とするポリシーがあり、プル要求が基になるコミットに関連付けられた作業項目を自動的に追加しないため、失敗します。悪いパラメータでプル要求に対するPATCHで突っついプログラムでプルリクエストに作業項目を関連付ける

をネット

を「あなただけのレビュー、説明、タイトル、状況をマージし、 とステータスを更新することができます」私は得ることができますプルリクエストurl +/workitemsを使用する作業項目のリスト(ただし、POST、PUTおよびPATCHはすべてコレクションでサポートされていません)。

作業アイテムをプルリクエストに関連付ける方法がありません。

+0

あなたは成功はアイテムを仕事や、そのユーザの声を投票するプル要求を結びますか? –

+0

現時点ではプログラム的な方法がないように私は問題に投票しました。 –

答えて

0

REST APIまたはクライアントSDK APIを介してプルリクエストに作業項目を関連付けることはサポートされていません。

あなたはこのユーザーの声を投票することができます(https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/15954904-rest-api-create-or-update-pull-request-with-work-i

回避策は、あなたがアイテムを動作するようにプル要求をリンクすることができたということです。 https://www.visualstudio.com/en-us/docs/integrate/api/wit/work-items#add-a-link(別の作業項目をリンクした後にプルリクエストURLが見つかる可能性があるので、作業項目をリンクして手動でリクエストをプルし、REST APIを介してその作業項目にリンクしてレスポンスを確認することができます)

+0

私はこれをプログラムで行う必要があるので、URLを取得するために「手動でリンクする」ことは機能しません。 プルリクエストへのサンプルリンクは、作業項目を形成する "ように見える" vstfs:///のGit/PullRequestId/44538c6a-0dbe-4251-bc4b-ca0859243d8e%2f2d89570f-a036-4ccd-A392-f81864f788b4の%の2f794 "" REST APIからプルリクエストを取得しても自己リンクが設定されないため、関連する正しいリンクを生成するためにどのIDを使用するか頭が悩まされています。 プルリクエストURLは、プルリクエストが作成されたときに、プルリクエストのfromとtoを表すGUIDで構成されていますか? –

+0

@MontaneHamiltonプルリクエストURLの形式は、vstfs://vstfs:/// Git/PullRequestId/[プロジェクトID]%2F [リポジトリID]%2F [プルリクエストID]です。これらの値はすべて、特定のプルリクエスト(https:// [XX] .visualstudio.com/[チームプロジェクト]/_ apis/git /リポジトリ/ [レポジトリ名[/プルリクエストID /プルリクエストID]?api -version = 1.0-preview.1 –

+0

@MontaneHamiltonプルリクエストを作業項目にリンクするサンプルJSON。【 { "OP": "追加"、 "パス": "/関係/ - "、 "値":{ "REL": "ArtifactLink"、 "URL":「vstfs:/// ":{ は、 "コメント": "" 新しいリンクテストを作る }} 2F6" 、 は、" 属性のGit/PullRequestId/b8ee4b6d-d5a8-4e3d-a7f8-f2da9713a830%2Fa4adf519-e040-4ea7-895e-8473d319f229% } ] –

0

作業項目をプル要求に関連付けるには、前述のように作業項目リンクを更新します。あなたが使用しているコード言語

わからない、私はあなたの参照のためのC#のコードサンプルを追加しました:

using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.SourceControl.WebApi; 
using Microsoft.TeamFoundation.WorkItemTracking.WebApi; 
using Microsoft.VisualStudio.Services.WebApi.Patch.Json; 
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models; 

namespace PRWIl 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string tfsurl = "https://xxx.visualstudio.com/"; 
      TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl)); 
      GitHttpClient ghc = ttpc.GetClient<GitHttpClient>(); 
      string project = "ProjectName"; 
      string repoid = "repositoryid"; 
      int pullrequestid = 1; 
      int workitemid = 1; 
      GitPullRequest gpr = ghc.GetPullRequestAsync(project,repoid,pullrequestid).Result; 

      WorkItemTrackingHttpClient withc = ttpc.GetClient<WorkItemTrackingHttpClient>(); 

      JsonPatchDocument json = new JsonPatchDocument(); 

      string pullrequesturl = "vstfs:///Git/PullRequestId/" + gpr.Repository.ProjectReference.Id + "%2F" + gpr.Repository.Id + "%2F" + gpr.PullRequestId; 
      json.Add(new JsonPatchOperation 
      { 
       Operation = Microsoft.VisualStudio.Services.WebApi.Patch.Operation.Add, 
       Path = "/relations/-", 
       Value = new WorkItemRelation() {Rel = "ArtifactLink", Url = pullrequesturl } 
      }); 
      WorkItem result = withc.UpdateWorkItemAsync(json,workitemid).Result; 
     } 
    } 
} 
関連する問題