Как программно получить список всех завершенных PullRequests в AzureDevOps? - PullRequest
0 голосов
/ 26 августа 2018

Я использую следующий код для получения списка Все выполненных запросов на извлечение в хранилище VSTS.Однако список извлекаемых запросов содержит только ограниченный список запросов, но не все.Есть идеи, что я делаю не так?

Вот код:

        /// <summary>
        /// Gets all the completed pull requests that are created by the given identity, for the given repository
        /// </summary>
        /// <param name="gitHttpClient">GitHttpClient that is created for accessing vsts.</param>
        /// <param name="repositoryId">The unique identifier of the repository</param>
        /// <param name="identity">The vsts Identity of a user on Vsts</param>
        /// <returns></returns>
        public static List<GitPullRequest> GetAllCompletedPullRequests(
            GitHttpClient gitHttpClient, Guid repositoryId, Identity identity)
        {
            var pullRequestSearchCriteria = new GitPullRequestSearchCriteria
            {
                Status = PullRequestStatus.Completed,
                CreatorId = identity.Id,
            };

            List<GitPullRequest> allPullRequests =  gitHttpClient.GetPullRequestsAsync(
                repositoryId,
                pullRequestSearchCriteria).Result;

            return allPullRequests;
        }

1 Ответ

0 голосов
/ 26 августа 2018

Оказывается, что по умолчанию этот вызов для получения запросов на получение будет возвращать только ограниченное количество запросов на получение (в моем случае это был 101). Что вам нужно сделать, так это указать параметры пропуска и top, которые указываются как необязательные в определении сигнатуры GetPullRequestsAsync метода. В следующем коде показано, как использовать эти параметры для возврата всех запросов извлечения:

Примечание : Из определения метода неясно, каковы значения по умолчанию для пропуска и верхних параметров (но, изменяя эти значения, я мог бы получать 1000 каждый раз).

/// <summary>
/// Gets all the completed pull requests that are created by the given identity, for the given repository
/// </summary>
/// <param name="gitHttpClient">GitHttpClient that is created for accessing vsts.</param>
/// <param name="repositoryId">The unique identifier of the repository</param>
/// <param name="identity">The vsts Identity of a user on Vsts</param>
/// <returns></returns>
public static List<GitPullRequest> GetAllCompletedPullRequests(
     GitHttpClient gitHttpClient, Guid repositoryId, Identity identity)
 {
     var pullRequestSearchCriteria = new GitPullRequestSearchCriteria
     {
         Status = PullRequestStatus.Completed,
         CreatorId = identity.Id,
     };
     List<GitPullRequest> allPullRequests = new List<GitPullRequest>();
     int skip = 0;
     int threshold = 1000;
     while(true){
         List<GitPullRequest> partialPullRequests =  gitHttpClient.GetPullRequestsAsync(
             repositoryId,
             pullRequestSearchCriteria,
             skip:skip, 
             top:threshold 
             ).Result;
         allPullRequests.AddRange(partialPullRequests);
         if(partialPullRequests.Length < threshold){break;}
         skip += threshold
    }
     return allPullRequests;
 }
...