VSTS - предотвращать толкание, но допускает слияние PR

У нас есть политики веток, настроенные в VSTS, чтобы не допустить, чтобы запросы на загрузку были объединены в master, если не связаны связанные сборки и рабочие элементы. Тем не менее, я не могу решить, как запретить разработчикам прямо работать с мастером. Установка разрешения "Contribute" на "Deny" не позволяет объединить запросы на pull.

Все разработчики должны иметь возможность объединять PR в мастер, но никому не разрешается напрямую нажимать мастер. Это возможно?

Ответ 1

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

Убедитесь, что у ваших разработчиков нет разрешения "Освобождать от применения политик".

Ответ 2

Я знаю, что этот вопрос немного старше, но здесь есть дополнительная информация...
К сожалению, я не могу добавить комментарии к "лучшему ответу", так что вот новый, вы можете просто рассматривать его как комментарий:

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

100% согласны

Убедитесь, что у ваших разработчиков нет разрешения "Освобождать от применения политик".

100% согласны

Освобожден от применения политики

Где мы должны посмотреть, есть ли у разработчиков разрешение "Освобождать от применения политик"?

С docs.microsoft.com:

Существует несколько разрешений, позволяющих пользователям обходить политику ветки. В TFS 2015 до TFS 2018 с обновлением 2 разрешение Освобождение от применения политики позволяет пользователям с этим разрешением выполнять следующие действия:

  • При завершении запроса на получение отказа включите переопределение политик и завершите запрос на получение ответа, даже если текущий набор политик ветвления не удовлетворен.
  • Нажмите непосредственно на ветку, даже если для этой ветки установлены политики веток. Обратите внимание, что когда пользователь с этим разрешением делает push-уведомление, которое переопределяет политику ветвления, push-уведомление автоматически обходит политику ветвления без шага или предупреждения отказа

. В службах Azure DevOps разрешение Освобождение от применения политики удалено, а его функциональные возможности разделены на следующие два новых разрешения:

  • Политики обхода при выполнении запросов извлечения
  • Политика обхода при нажатии

Пользователи, которые ранее включали Освобождение от применения политики, теперь имеют два новых разрешения.

Вы можете найти эти варианты в:
организация/проект/настройки/репозитории

Местный Git

Предположительно, пользователь может сделать что-нибудь со своей локальной версией главной ветки, но тогда Azure DevOps будет отрицать передачу на удаленный компьютер? Если/когда это произойдет, что нужно сделать разработчику, чтобы исправить беспорядок, с которым они столкнулись в своем локальном репо?

Это связано с тем, что политикам ветвления в DevOps Azure запрещено называть это "vanilla-git". Это специфическое расширение Microsoft, которое не имеет ничего общего с локальными ветками Git вашего пользователя. Поэтому пользователь может делать со своим локальным репозиторием git все, что ему захочется - DevOps просто предотвращает некоторые вещи "на стороне сервера".

О вопросе, как разработчик может отменить беспорядок: Я рекомендую этот ТАК вопрос.