Ошибка UpdatePullRequestAsync с ошибкой: недопустимая автоматическая установка запроса на извлечение по идентификатору - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю TFS webhook для установки автозаполнения, вызывая UpdatePullRequestAsync при создании запроса на извлечение. Однако я получаю сообщение об ошибке:

Недопустимое значение аргумента. Имя параметра: неверное автоматическое заполнение запроса на получение по идентификатору. Допустимые значения: текущий идентификатор пользователя или пустой guid (для отмены автоматического завершения).

string createdBy = webHookRequest.resource.createdBy.id.Value;
GitHttpClient gitClient = Connection.GetClient<GitHttpClient>();

var pullRequestWithAutoCompleteEnabled = new GitPullRequest
{

    AutoCompleteSetBy = new IdentityRef() { Id = createdBy},
    CompletionOptions = new GitPullRequestCompletionOptions
    {
        SquashMerge = false,
        DeleteSourceBranch = false, // false if prefered otherwise
        MergeCommitMessage = commitMessage
    }
};

GitPullRequest updatedPullrequest = gitClient.UpdatePullRequestAsync(
                pullRequestWithAutoCompleteEnabled,
                repoId,
                prId).Result;

1 Ответ

1 голос
/ 06 ноября 2019

Чтобы установить автозаполнение для запроса извлечения, вы должны убедиться, что у вас установлен набор политик ветвления.

Автозаполнение доступно только при наличии набора политик ветвления, поскольку только политики ветвлений, которыене удалось заблокировать PR в любой момент. Если политики ветвей не установлены, автоматическое заполнение не требуется, поскольку вы можете просто завершить его немедленно.

Для обновления извлечения необходимо указать тот же идентификатор пользователя (текущий авторизованный пользователь)запрос на автозаполнение через API.

Согласно сообщению об ошибке,

Недопустимое значение аргумента. Имя параметра: неверное автоматическое заполнение запроса на получение по идентификатору. Допустимые значения: либо текущий идентификатор пользователя, либо пустой guid (для отмены автоматического завершения).

Боюсь, это может быть связано с вашим кодом:

string createdBy = webHookRequest.resource.createdBy.id.Value;

AutoCompleteSetBy = new IdentityRef() { Id = createdBy};

Предложитьотладку кода за строкой и проверку возвращенного значения AutoCompleteSetBy, если оно соответствует.

Вы также можете взглянуть на этот похожий вопрос: Как программным образом настроить AzureDevOps PullRequest для автоматического завершения? Используется этот формат:

AutoCompleteSetBy = new IdentityRef { Id = pullRequest.CreatedBy.Id };

Кроме того,Также просим обратиться к этому блогу: Программно создать запрос на извлечение для Visual Studio Team Services . Похож на TFS, что может быть полезно.

...