Принудительное слияние сквоша в Azure DevOps Pull Request с использованием GitPullRequestCompletionOptions - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать REST API Azure DevOps Services, чтобы задать Параметры завершения PR для принудительного слияния сквоша по запросу на извлечение.

Примечание: Я не могу установить политику ветвления для принудительного слияния сквоша, так как проверяю определенные условия, чтобы увидеть, требуется ли слияние сквоша, или пытаюсь навязать сквош, как если бы политика ветвления была установлена ​​только для этого PR.

Когда я делаю следующий вызов:

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=5.0

{
  "completionOptions": {
    "squashMerge": true
  } 
}

Ответ показывает, что значение установлено

A section of the response, showing the value of 'squashMerge' set to true.

Еще при попыткечтобы выполнить запрос, я бы ожидал, что флажок «Изменения сквоша при объединении» будет отмечен и отключен.

Squash option is not selected, or disabled.

Если я оставлю форму каки завершить объединение, сквош не выполняется.

Если установить для bypassPolicy значение true, я все равно не вижу разницы в параметрах завершения.

Итак, в общем, я знаю, что вызовуспешно, поскольку ответ возвращается с установленными параметрами, нопохоже, что изменения в запросе извлечения в DevOps Azure не происходят.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вы можете использовать политику, которая обеспечивает это.

Если вы заходите в филиалы в DevOps, выберите свою ветку -> политики, в которых вы можете разрешить только слияние в сквош:

enter image description here

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

Вот как это работает для Установить автозаполнение : enter image description here

0 голосов
/ 11 марта 2019

Microsoft ответила в на форумах сообщества разработчиков следующим ответом:

В этом случае существует разница между ожидаемым поведением в пользовательском интерфейсе и через конечную точку REST.Установка squashMerge в опциях завершения указывает PR завершить с помощью сквоша, только если вы завершили его с конечной точкой REST.В пользовательском интерфейсе мы уважаем пользовательские настройки, чтобы позволить пользователям выбирать, что они хотели бы сделать (если не включена политика).В этом случае вы не включили политику, поэтому пользователь может или раздавить или нет.Предпочтения пользователей фактически заменяют то, что вы делаете с REST API.Если они сквош слили предыдущий PR, мы запомним это и создадим то же самое для них по умолчанию на следующем PR.

TLDR: Вы не можете обязательно контролировать значения формы по умолчанию с помощью конечной точки REST и должны использовать политику для принудительного слияния в сквош (или ожидать, что ваши пользователи могут установить флажок или нет в зависимости от своих предпочтений, но мы не заставляемпо умолчанию).

...