2016-09-06 3 views
1

Я могу получить (https://www.visualstudio.com/en-us/docs/integrate/api/git/pull-requests#get-a-pull-request) запрос на тяну, управлять рецензентами и завершить его. Филиал имеет политику, требующую рабочих элементов, и она терпит неудачу, поскольку запрос на перенос не добавляет автоматически рабочие элементы, связанные с базовыми коммитами.Связанные рабочие элементы с запросом на выборку

Poking в патче запроса тянуть с плохими параметрами сеткой

«Вы можете обновить только рецензент, описание, название, слияния статуса, и статуса»

я могу получить список рабочих элементов с использованием запросов url +/workitems запроса на перенос, но POST, PUT и PATCH не поддерживаются в коллекции.

Я не вижу способ связать рабочий элемент с запросом на растяжение?

+0

ли вы успех ссылкой запроса тянуть на работу пункта или голосовать, что голос пользователя? –

+0

Я голосовал по этому вопросу, поскольку в это время, похоже, нет программных способов. –

ответ

0

Невозможно связать рабочие элементы с запросом на вытягивание через API REST или API-интерфейс клиента SDK.

Вы можете голосовать этот пользовательский голос (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 не заполняет личную ссылку, поэтому я почесываю голову относительно того, какие идентификаторы использовать для создания правильной ссылки для связи. Является ли URL запроса на тягу состоящим из идентификаторов GUID, представляющих запросы от и от запроса на растяжение, когда он был создан? –

+0

@MontaneHamilton Формат URL-адреса запроса тяги vstfs: // vstfs: /// Git/PullRequestId/[id проекта]% 2F [идентификатор репозитория]% 2F [идентификатор запроса тяги]. Все эти значения включены в ответ на конкретный запрос на pull (https: // [XX] .visualstudio.com/[командный проект]/_ apis/git/repositories/[имя репозитория [/ pullRequests/[идентификатор запроса на пробу]] api -version = 1.0-preview.1 –

+0

@MontaneHamilton Пример JSON, чтобы связать запрос тяги к рабочему элементу.[ { "оп": "добавить", "путь": "/ отношения/-", "значение": { "отн": "ArtifactLink", "URL": «vstfs: /// Git/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; 
     } 
    } 
} 
Смежные вопросы