Политики веток — это набор правил и ограничений, которые применяются к определенным веткам и тегам в репозитории. С помощью политик вы можете контролировать процесс внесения изменений, обеспечивать ревью кода, соблюдать правильность именования и условия создания веток и тегов, а также защищать ветки от случайных коммитов или прямого пуша.
Конфигурация политик задается для конкретного репозитория и хранится в файле .sourcecraft/branches.yaml. Для всего репозитория действует конфигурация, которая размещена в основной ветке, например master или main.
Общий вид конфигурации политики в .sourcecraft/branches.yaml:
target — тип защищаемого ресурса. Обязательный параметр. Возможные значения:
default_branch — основная ветка, например master или main.
branch — ветка.
tag — тег.
matches — фильтр или список фильтров по имени защищаемого ресурса. Обязательный параметр для target: branch и target: tag.
message — сообщение, которое будет показываться пользователю при срабатывании политики. Обязательный параметр.
rules — правило или список правил, которые будут применены к защищаемому ресурсу. Обязательный параметр. Возможные значения:
prevent_force_push — нельзя переписывать историю коммитов в ветке (выполнять force push).
prevent_non_pr_changes — нельзя напрямую вносить правки в ветку (выполнять push), только через предложение изменений.
prevent_all_changes — нельзя выполнять любые действия с веткой или тегом.
prevent_deletion — нельзя удалять ветку или тег.
prevent_creation — нельзя создавать ветку или тег.
Важно
Скоро перестанет поддерживаться хранение конфигурации CI/CD, правил ревью кода и политик веток в едином файле .src.ci.yaml в корне репозитория. Используйте отдельные файлы .sourcecraft/ci.yaml, .sourcecraft/review.yaml и .sourcecraft/branches.yaml.
На вкладке Домой в секции Ваша мастерская перейдите в раздел Репозитории и выберите репозиторий.
В правом верхнем углу нажмите кнопку Клонировать.
В зависимости от способа подключения скопируйте ссылку для клонирования репозитория.
В терминале выполните команду:
git clone <ссылка_для_клонирования_репозитория>
Перейдите в склонированный репозиторий:
cd <имя_репозитория>
Сформируйте файл конфигурации политики веток .sourcecraft/branches.yaml, например:
branch_protection:policies:## Запрет переписывания истории коммитов, внесения правок без ## предложения изменений, а также удаления основной ветки-target:default_branchmessage:"Direct push into main branch is forbidden, create PR first"rules:-prevent_force_push-prevent_non_pr_changes-prevent_deletion## Запрет создания веток с названиями, соответствующими фильтрам-target:branchmatches: ["*", "!OO-*/**", "!hotfix/**", "!chore/**", "!release/**"]
message:"Please use proper branch naming"rules:-prevent_creation## Запрет создания тегов с названиями, соответствующими фильтрам-target:tagmatches:"gitcore-*"message:"Manual tag creation is forbidden, please use Releaser"rules:-prevent_creation
Чтобы проверить срабатывание политики веток, внесите изменения в файлы в основной ветке, сделайте коммит и попробуйте отправить изменения в удаленный репозиторий:
В результате вы получите ошибку с сообщением Direct push into main branch is forbidden, create PR first.
Включить обход политики веток для администратора репозитория
Важно
Обойти правила политики веток, например чтобы поправить конфигурацию в .sourcecraft/branches.yaml, могут только пользователи с рольюАдминистратор репозитория.