2016-09-06 4 views
1

나는 풀 요청을 받고 (https://www.visualstudio.com/en-us/docs/integrate/api/git/pull-requests#get-a-pull-request) 검토자를 관리하고 완료 할 수 있습니다. 브랜치에는 작업 항목이 필요한 정책이 있으며 풀 요청이 기본 커밋과 연관된 작업 항목을 자동으로 추가하지 않으므로 실패합니다. 나쁜 매개 변수를 사용하여 풀 요청에 대한 패치에서 파고프로그래밍 방식으로 작업 항목을 끌어 오기 요청에 연결

내가 얻을 수

를 "당신은 검토는 설명은, 제목, 상태, 및 상태를 병합 업데이트 할 수 있습니다"그물 끌어 오기 요청 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 : /// 힘내/PullRequestId/44538c6a-0dbe-4251-bc4b-ca0859243d8e %의 2f2d89570f-a036-4ccd-a392-f81864f788b4의 %의 2f794 "" REST API에서 끌어 오기 요청을 받으면자가 링크가 채워지지 않으므로 연결할 올바른 링크를 생성하는 데 사용할 ID에 대해 머리를 긁적니다. 끌어 오기 요청 URL은 끌어 오기 요청을 만들 때 끌어 오기 요청의 시작 및 끝점을 나타내는 GUID로 구성됩니까? –

+0

@MontaneHamilton 풀 요청 URL의 형식은 vstfs : //vstfs : /// Git/PullRequestId/[프로젝트 ID] % 2F [리포지토리 ID] % 2F [끌어 오기 요청 ID]입니다. 이러한 모든 값은 특정 끌어 오기 요청 (https : // [XX] .visualstudio.com/[team project]/_ apis/git/repositories/[리포지토리 이름 [/ pullRequests/[끌어 오기 요청 ID]? api -version = 1.0-preview.1 –

+0

@MontaneHamilton 견본 요청을 작업 항목에 연결하는 샘플 JSON입니다.[ { "OP": "추가", "경로": "/ 관계/-" "값": { "확인해": "ArtifactLink" "URL": "vstfs : /// 힘내/PullRequestId/b8ee4b6d-d5a8-4e3d-a7f8-f2da9713a830 %의 2Fa4adf519-e040-4ea7-895e-8473d319f229 %의 2F6 " 는"속성 ": { "코멘트 ":"새로운 링크 테스트 만들기 " } } } ] –

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