Заметки консультанта

Шамрай Александр Владимирович

Azure DevOps Rest Api. 21. Создание и просмотр запросов на включение кода

Posted by Shamrai Alexander на 8 июля, 2019

Для взаимодействия с объектами версионного контроля GIT используется клиент GitHttpClient. В рамках данной статьи мы рассмотрим методы:

  • Просмотра текущих или закрытых запросов на включение кода.
  • Создания нового запроса на включение кода.
  • Создания рабочих элементов, связынных с существующим запросом на включение кода.

Просмотра текущих или закрытых запросов на включение кода

Для поиска запросов на включение кода используется метод GetPullRequestsAsync, который принимает основные параметры: имя командного проекта и наименование репозитория. Кроме этого, условия поиска можно детализировать, указав класс GitPullRequestSearchCriteria как дополнительный параметр, в котором можно определить:

  • CreatorId – идентификатор пользователя, создавшего запрос
  • ReviewerId — идентификатор ревьювера, который присутствует в запрос
  • SourceRefName – наименование ветви источника изменений
  • Status – состояние запроса. Перечень статусов можно найти в перечислении PullRequestStatus.
  • TargetRefName – наименование целевой ветви.

Пример выполнения метода, следующий:

var pullRequests = (CompletedPRs)?
GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, new GitPullRequestSearchCriteria { Status = PullRequestStatus.Completed, TargetRefName = TargetRef }, top: 10).Result :

GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, null ).Result;

В данном примере мы получаем 10 закрытых запросов на включение кода для определенной ветви или список активных запросов на включение кода. Каждый запрос на включение кода содержит следующие важные свойства:

  • PullRequestId – идентификатор запроса
  • Title – наименование запроса
  • CreatedBy – пользователь, который создал запрос
  • Status – состояние запроса
  • SourceRefName – ветвь источник изменений
  • TargetRefName – ветвь приемник изменений
  • Description – описание запроса

Также мы можем получить список комментариев запроса на включение кода через метод GetThreadsAsync, который принимает основные три параметра: имя командного проекта, наименование репозитория и идентификатор запроса на включение изменений. В ответ мы получаем список поток обсуждений GitPullRequestCommentThread. Поток обсуждений содержит список объектов Comment. Первый элемент Comment всегда является темой обсуждения, а каждый последующий ответами. Пример получения комментариев к запросу:

var pullTheads = GitClient.GetThreadsAsync(TeamProjectName, GitRepo, pullRequest.PullRequestId).Result;

Рабочие элементы, которые связаны с запросом на включение кода, можно получить через метод GetPullRequestWorkItemRefsAsync, который также получает только три основных параметра: имя командного проекта, наименование репозитория и идентификатор запроса на включение изменений. Результатом является список объектов ResourceRef, который содержит идентификатор рабочего элемента. Как получить детали рабочего элемента описано здесь: Получение рабочих элементов. Пример получения списка рабочих элементов:

var workItemRefs = GitClient.GetPullRequestWorkItemRefsAsync(TeamProjectName, GitRepo, pullRequest.PullRequestId).Result;

Комиты, которые вошли в запрос на включение кода, можно получить через метод GetPullRequestCommitsAsync, который все еще получает только три основных параметра: имя командного проекта, наименование репозитория и идентификатор запроса на включение изменений. Результатом является список объектов GitCommitRef, который включает в себя: идентификатор комита CommitId и его комментарий Comment. Пример получения списка комитов:

var commits = GitClient.GetPullRequestCommitsAsync(TeamProjectName, GitRepo, pullRequest.PullRequestId).Result;

Создание запроса на включение кода

Запрос на включение кода создается через метод CreatePullRequestAsync, который принимает три основных параметра:

  • gitPullRequestToCreate – объект GitPullRequest, который содержит характеристики нового запроса на включение.
  • Project – наименование командного проекта.
  • repositoryId – наименование репозитрия

Для описания нового запроса на включение кода класс GitPullRequest содержит следующие основные свойства:

  • Title – наименование запроса
  • Description – описание запроса
  • SourceRefName – путь к исходной ветви
  • TargetRefName – путь к целевой ветви
  • (опционально) WorkItemRefs – массив объектов ResourceRef, в который присваивается идентификатор рабочего элемента Id и его ссылка Url.

Пример создания запроса на включение кода:

GitPullRequest pr = new GitPullRequest();
pr.Title = pr.Description = String.Format(«PR from {0} into {1} «, SourceRef, TargetRef);

pr.SourceRefName = SourceRef;

pr.TargetRefName = TargetRef;

var newPr = GitClient.CreatePullRequestAsync(pr, TeamProjectName, RepoName).Result;

Создание рабочих элементов, связанных с запросом на включение кода

Примеры создания и связывания рабочих элементов рассматривались здесь: Создание и редактирование рабочих элементов и Добавление и редактирование связей между рабочими элементами. Отличием связывания рабочего элемента с запросом на включение кода является объект описания связи:

  • тип связи — ArtifactLink
  • ссылка на объект формируется по формату: vstfs:///Git/PullRequestId/{0}%2F{1}%2F{2}, где:
    • {0} – идентификатор командного проекта.
    • {1} – идентификатор репозитория.
    • {2} – идентификатор запроса на включение кода.
  • Наименование связи — Pull Request

Пример создания объекта для описания связи с запросом на включение кода:

const string ArtigactLinkName = «ArtifactLink»;
const string PRUrlTemplate = «vstfs:///Git/PullRequestId/{0}%2F{1}%2F{2}»;

const string PRLinkName = «Pull Request»;

static object CreateNewLinkObject(string RelName, string RelUrl, string Name, string Comment)

{

    return new {

        rel = RelName,

        url = RelUrl,

        attributes = new {

            name = Name,

            comment = Comment

        }

    };

}

FiledValue = CreateNewLinkObject(ArtigactLinkName, String.Format(PRUrlTemplate, TeamProject.Id, TeamRepo.Id, pr.PullRequestId), PRLinkName, «Review this PR»);

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/21.TFRestApiAppCreateAndViewPullRequests

Один ответ to “Azure DevOps Rest Api. 21. Создание и просмотр запросов на включение кода”

  1. […] Azure DevOps Rest Api. 21. Создание и просмотр запросов на включен… Автоматическое обновление целевой даты исправления […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

 
%d такие блоггеры, как: