---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - https://vibe.sourcecraft.dev/portal/docs/en/sourcecraft/operations/org-config.md
  - https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-config.md
  - href: https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-config.md
    type: text/markdown
    title: Markdown version
  - href: https://vibe.sourcecraft.dev/portal/docs/ru/llms.txt
    rel: describedby
title: Настроить правила ревью кода и политики веток на уровне организации в SourceCraft
description: Следуя этой инструкции, вы настроите общие правила ревью кода и политик веток для всех репозиториев организации через репозиторий .sourcecraft.
---
> **Documentation Index:** Fetch the complete configuration index at https://vibe.sourcecraft.dev/portal/docs/ru/llms.txt


# Настроить правила ревью кода и политики веток на уровне организации в SourceCraft

Вы можете управлять общими [правилами ревью кода](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/code-review.md) и [политиками веток](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/branch-policies.md) для всех репозиториев [организации](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#org) с помощью специального репозитория с названием `.sourcecraft`.

Подробнее на странице [Конфигурация параметров организации в виде кода в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/org-config.md).

{% note info %}

Инструкции по настройке политики доступа организации и пользовательских полей задач на уровне организации приведены на отдельных страницах:
* [Настроить пользовательские поля задач в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-custom-fields.md)
* [Настроить политику доступа в организации SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-policies.md)

{% endnote %}

## Создать репозиторий .sourcecraft {#create-repo}

Чтобы [создать](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/repo-create.md) репозиторий `.sourcecraft` для управления правилами ревью кода и политиками веток организации:

{% list tabs group=instructions %}

- Интерфейс SourceCraft {#src}

  1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
  1. На панели слева нажмите ![image](../../_assets/console-icons/plus.svg) **Создать репозиторий**.
  1. В открывшемся окне выберите **Пустой репозиторий**.
  1. В поле **Название** укажите `.sourcecraft`.
  1. Нажмите **Создать репозиторий**.

  {% note info %}

  Вы можете сделать репозиторий `.sourcecraft` публичным, внутренним или приватным — конфигурация в любом случае будет применяться ко всем репозиториям организации.

  {% endnote %}

{% endlist %}


## Настроить правила ревью кода для организации {#configure-code-review}

Чтобы настроить единые правила ревью кода для всех репозиториев организации:

{% list tabs group=instructions %}

- Интерфейс SourceCraft {#src}

  1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
  1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** перейдите в раздел ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** → ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
  1. Выберите репозиторий `.sourcecraft`.
  1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/archive.svg) **Обзор**.
  1. Выберите ветку для внесения изменений.
  1. Над списком файлов в ветке нажмите ![image](../../_assets/console-icons/square-plus.svg).
  1. Выберите ![image](../../_assets/console-icons/file.svg) **Файл**.
  1. В открывшемся окне введите имя файла `.sourcecraft/review.yaml` и нажмите **Создать файл**.
  1. В файле `.sourcecraft/review.yaml` опишите правила ревью кода по шаблону:

      <!-- source: ru/_includes/sourcecraft/code-review-config.md -->
      ```yaml
      codereview: 
        need_ships: 1 # Требуемое количество одобрений от ревьюеров
        ignore_self_ship: false # Игнорировать одобрения от автора предложения изменений
        ignore_non_reviewers_block: false # Игнорировать блокировку предложения изменений от пользователей, не являющихся ревьюерами
        auto_assign: true # Автоматически назначать ревьюеров
        disable_trust: true # Запретить резолюцию «Доверять» для предложений изменений
        rules:
          - patterns:
              - "**" # Паттерн пути в репозитории
            reviewers:
              usernames: 
                - "<имя_пользователя>" # Список ревьюеров
              assign: 1 # Количество ревьюеров, назначенных автоматически
              need_ships: 1 # Требуемое количество одобрений от ревьюеров
              ignore_self_ship: false # Игнорировать одобрения от автора предложения изменений
      ```
      <!-- endsource: ru/_includes/sourcecraft/code-review-config.md -->

      <!-- source: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->
      {% note tip %}

      Для групповой фильтрации рекомендуется использовать паттерн `**`, поскольку простой паттерн `*` не предусматривает совпадения в выражениях с `/`.

      {% endnote %}
      <!-- endsource: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->

      Синтаксис настроек на уровне организации идентичен синтаксису настроек на уровне репозитория.

  1. <!-- source: ru/_includes/sourcecraft/review-patterns.md -->
     В блоке `patterns` укажите пути в репозитории, по которым будут срабатывать правила ревью кода, например:

     * `"**"` — применять правило для всего репозитория.
     * `"src/**"` — применять правило только для директории `src`.
     * `"!docs/**"` — не применять правило для директории `docs`.

     Вы можете последовательно использовать несколько паттернов, например:

     ```yaml
     - patterns:
       - "**"
       - "!docs/**"
     ```

     В таком случае правило будет применено к любым изменениям в репозитории, кроме изменений в директории `docs`.

     {% note tip %}

     При последовательном применении паттернов выставляйте паттерн `"**"` самым первым.

     {% endnote %}
     <!-- endsource: ru/_includes/sourcecraft/review-patterns.md -->
  1. В правом верхнем углу нажмите **Сохранить изменения**.
  1. В открывшемся окне настройте параметры внесения изменений:
      * В поле **Сообщение об изменениях** укажите комментарий, который опишет внесенные изменения.
      * В блоке **Ветка изменений** выберите главную ветку по умолчанию.
      * В блоке **Действие после сохранения изменений** выберите `Просто сохранить`.
  1. Подтвердите внесение изменений.

- Командная строка {#cli}

  1. Склонируйте репозиторий:

      <!-- source: ru/_includes/sourcecraft/clone-repo-workflow.md -->
      1. [Установите Git](https://git-scm.com/downloads).
      1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
      1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории** и выберите репозиторий.

          Также вы можете открыть любой публичный репозиторий.

      1. На странице репозитория в правом верхнем углу нажмите кнопку ![image](../../_assets/console-icons/chevron-down-wide.svg) **Клонировать**.
      1. Из поля **HTTPS** или **SSH** скопируйте ![image](../../_assets/console-icons/copy.svg) ссылку для клонирования репозитория.

          В зависимости от протокола подключения для клонирования используются разные домены:

          #|
          || **Протокол** | **Домен** | **Ссылка для клонирования** ||
          || HTTPS | `git.sourcecraft.dev` | `https://git@git.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
          || SSH | `ssh.sourcecraft.dev` | `ssh://ssh.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
          |#

      1. В терминале выполните команду:

          ```bash
          git clone <ссылка_для_клонирования_репозитория>
          ```

          {% cut "Пример команды для клонирования репозитория с документацией SourceCraft" %}

          ```bash
          git clone https://git@git.sourcecraft.dev/sourcecraft/documentation.git
          ```

          {% endcut %}

          <!-- source: ru/_includes/sourcecraft/private-repo-clone-note.md -->
          {% note warning %}

          Чтобы склонировать [приватный или внутренний репозиторий](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#repos), аутентифицируйтесь с помощью [персонального токена (PAT)](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/security/pat.md) или [SSH-ключа](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/security/ssh.md).

          {% endnote %}
          <!-- endsource: ru/_includes/sourcecraft/private-repo-clone-note.md -->

      1. Перейдите в склонированный репозиторий:
          
          ```bash
          cd <имя_репозитория>
          ```
      <!-- endsource: ru/_includes/sourcecraft/clone-repo-workflow.md -->

  1. Создайте файл конфигурации правил ревью кода `.sourcecraft/review.yaml`:

      ```bash
      nano .sourcecraft/review.yaml
      ```

  1. Сформируйте файл по шаблону:

      <!-- source: ru/_includes/sourcecraft/code-review-config.md -->
      ```yaml
      codereview: 
        need_ships: 1 # Требуемое количество одобрений от ревьюеров
        ignore_self_ship: false # Игнорировать одобрения от автора предложения изменений
        ignore_non_reviewers_block: false # Игнорировать блокировку предложения изменений от пользователей, не являющихся ревьюерами
        auto_assign: true # Автоматически назначать ревьюеров
        disable_trust: true # Запретить резолюцию «Доверять» для предложений изменений
        rules:
          - patterns:
              - "**" # Паттерн пути в репозитории
            reviewers:
              usernames: 
                - "<имя_пользователя>" # Список ревьюеров
              assign: 1 # Количество ревьюеров, назначенных автоматически
              need_ships: 1 # Требуемое количество одобрений от ревьюеров
              ignore_self_ship: false # Игнорировать одобрения от автора предложения изменений
      ```
      <!-- endsource: ru/_includes/sourcecraft/code-review-config.md -->

      <!-- source: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->
      {% note tip %}

      Для групповой фильтрации рекомендуется использовать паттерн `**`, поскольку простой паттерн `*` не предусматривает совпадения в выражениях с `/`.

      {% endnote %}
      <!-- endsource: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->

      Синтаксис настроек на уровне организации идентичен синтаксису настроек на уровне репозитория.

  1. <!-- source: ru/_includes/sourcecraft/review-patterns.md -->
     В блоке `patterns` укажите пути в репозитории, по которым будут срабатывать правила ревью кода, например:

     * `"**"` — применять правило для всего репозитория.
     * `"src/**"` — применять правило только для директории `src`.
     * `"!docs/**"` — не применять правило для директории `docs`.

     Вы можете последовательно использовать несколько паттернов, например:

     ```yaml
     - patterns:
       - "**"
       - "!docs/**"
     ```

     В таком случае правило будет применено к любым изменениям в репозитории, кроме изменений в директории `docs`.

     {% note tip %}

     При последовательном применении паттернов выставляйте паттерн `"**"` самым первым.

     {% endnote %}
     <!-- endsource: ru/_includes/sourcecraft/review-patterns.md -->
  1. Добавьте файл конфигурации в индекс `git`, сделайте коммит и отправьте изменения в главную ветку по умолчанию:

      ```bash
      git add .sourcecraft/review.yaml
      git commit -m "Добавлен файл с правилами ревью кода для организации"
      git push -u origin <имя_главной_ветки>
      ```

{% endlist %}

## Настроить политики веток для организации {#configure-branch-policies}

Чтобы настроить единые политики веток для всех репозиториев организации:

{% list tabs group=instructions %}

- Интерфейс SourceCraft {#src}

  1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
  1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** перейдите в раздел ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** → ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
  1. Выберите репозиторий `.sourcecraft`.
  1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/archive.svg) **Обзор**.
  1. Выберите ветку для внесения изменений.
  1. Над списком файлов в ветке нажмите ![image](../../_assets/console-icons/square-plus.svg).
  1. Выберите ![image](../../_assets/console-icons/file.svg) **Файл**.
  1. В открывшемся окне введите имя файла `.sourcecraft/branches.yaml` и нажмите **Создать файл**.
  1. В файле `.sourcecraft/branches.yaml` опишите политики веток по шаблону:

      <!-- source: ru/_includes/sourcecraft/branch-policies-config-template.md -->
      ```yaml
      branch_protection:
        bypass:
          usernames:
            - <имя_пользователя>
        policies:
          - target: <тип_защищаемого_ресурса>
            matches: "<фильтр>"
            message: "<сообщение_пользователю_при_срабатывании>"
            rules:
              - <правило_1>
              - <правило_2>
      ```

      Где:

      * `bypass` — настройки обхода политик веток для отдельных пользователей. Необязательный параметр.
        * `usernames` — список имен пользователей, которым разрешено обходить все политики веток. Необязательный параметр.
      * `target` — тип защищаемого ресурса. Обязательный параметр. Возможные значения:
        * `default_branch` — основная ветка, например `master` или `main`.
        * `branch` — ветка.
        * `tag` — тег.

      * `matches` — фильтр или список фильтров по имени защищаемого ресурса. Обязательный параметр для `target: branch` и `target: tag`. 
      * `message` — сообщение, которое будет показываться пользователю при срабатывании политики. Обязательный параметр.
      * `rules` — правило или список правил, которые будут применены к защищаемому ресурсу. Обязательный параметр. Возможные значения:
        * `prevent_force_push` — нельзя переписывать историю коммитов в ветке (выполнять `force push`). 
        * `prevent_non_pr_changes` — нельзя напрямую вносить правки в ветку (выполнять `push`), только через [предложение изменений](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr).
        * `prevent_all_changes` — нельзя выполнять любые действия с веткой или тегом.

            <!-- source: ru/_includes/sourcecraft/branch-policies-deprecated-rule.md -->
            {% note warning %}

            Правило `prevent_all_changes` устарело. Вместо него используйте связку правил `prevent_creation` и `prevent_update`.

            {% endnote %}
            <!-- endsource: ru/_includes/sourcecraft/branch-policies-deprecated-rule.md -->

        * `prevent_deletion` — нельзя удалять ветку или тег.
        * `prevent_creation` — нельзя создавать ветку или тег.
        * `prevent_update` — нельзя вносить изменения в ветку или тег после создания (запрещены `push`, `force push`, удаление и слияние через предложение изменений).
      <!-- endsource: ru/_includes/sourcecraft/branch-policies-config-template.md -->

      Синтаксис настроек на уровне организации идентичен синтаксису настроек на уровне репозитория.

      <!-- source: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->
      {% note tip %}

      Для групповой фильтрации рекомендуется использовать паттерн `**`, поскольку простой паттерн `*` не предусматривает совпадения в выражениях с `/`.

      {% endnote %}
      <!-- endsource: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->

  1. В правом верхнем углу нажмите **Сохранить изменения**.
  1. В открывшемся окне настройте параметры внесения изменений:
      * В поле **Сообщение об изменениях** укажите комментарий, который опишет внесенные изменения.
      * В блоке **Ветка изменений** выберите главную ветку по умолчанию.
      * В блоке **Действие после сохранения изменений** выберите `Просто сохранить`.
  1. Подтвердите внесение изменений.

- Командная строка {#cli}

  1. Склонируйте репозиторий:

      <!-- source: ru/_includes/sourcecraft/clone-repo-workflow.md -->
      1. [Установите Git](https://git-scm.com/downloads).
      1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
      1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории** и выберите репозиторий.

          Также вы можете открыть любой публичный репозиторий.

      1. На странице репозитория в правом верхнем углу нажмите кнопку ![image](../../_assets/console-icons/chevron-down-wide.svg) **Клонировать**.
      1. Из поля **HTTPS** или **SSH** скопируйте ![image](../../_assets/console-icons/copy.svg) ссылку для клонирования репозитория.

          В зависимости от протокола подключения для клонирования используются разные домены:

          #|
          || **Протокол** | **Домен** | **Ссылка для клонирования** ||
          || HTTPS | `git.sourcecraft.dev` | `https://git@git.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
          || SSH | `ssh.sourcecraft.dev` | `ssh://ssh.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
          |#

      1. В терминале выполните команду:

          ```bash
          git clone <ссылка_для_клонирования_репозитория>
          ```

          {% cut "Пример команды для клонирования репозитория с документацией SourceCraft" %}

          ```bash
          git clone https://git@git.sourcecraft.dev/sourcecraft/documentation.git
          ```

          {% endcut %}

          <!-- source: ru/_includes/sourcecraft/private-repo-clone-note.md -->
          {% note warning %}

          Чтобы склонировать [приватный или внутренний репозиторий](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#repos), аутентифицируйтесь с помощью [персонального токена (PAT)](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/security/pat.md) или [SSH-ключа](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/security/ssh.md).

          {% endnote %}
          <!-- endsource: ru/_includes/sourcecraft/private-repo-clone-note.md -->

      1. Перейдите в склонированный репозиторий:
          
          ```bash
          cd <имя_репозитория>
          ```
      <!-- endsource: ru/_includes/sourcecraft/clone-repo-workflow.md -->

  1. Создайте файл конфигурации политик веток `.sourcecraft/branches.yaml`:

      ```bash
      nano .sourcecraft/branches.yaml
      ```

  1. Сформируйте файл по шаблону:

      <!-- source: ru/_includes/sourcecraft/branch-policies-config-template.md -->
      ```yaml
      branch_protection:
        bypass:
          usernames:
            - <имя_пользователя>
        policies:
          - target: <тип_защищаемого_ресурса>
            matches: "<фильтр>"
            message: "<сообщение_пользователю_при_срабатывании>"
            rules:
              - <правило_1>
              - <правило_2>
      ```

      Где:

      * `bypass` — настройки обхода политик веток для отдельных пользователей. Необязательный параметр.
        * `usernames` — список имен пользователей, которым разрешено обходить все политики веток. Необязательный параметр.
      * `target` — тип защищаемого ресурса. Обязательный параметр. Возможные значения:
        * `default_branch` — основная ветка, например `master` или `main`.
        * `branch` — ветка.
        * `tag` — тег.

      * `matches` — фильтр или список фильтров по имени защищаемого ресурса. Обязательный параметр для `target: branch` и `target: tag`. 
      * `message` — сообщение, которое будет показываться пользователю при срабатывании политики. Обязательный параметр.
      * `rules` — правило или список правил, которые будут применены к защищаемому ресурсу. Обязательный параметр. Возможные значения:
        * `prevent_force_push` — нельзя переписывать историю коммитов в ветке (выполнять `force push`). 
        * `prevent_non_pr_changes` — нельзя напрямую вносить правки в ветку (выполнять `push`), только через [предложение изменений](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr).
        * `prevent_all_changes` — нельзя выполнять любые действия с веткой или тегом.

            <!-- source: ru/_includes/sourcecraft/branch-policies-deprecated-rule.md -->
            {% note warning %}

            Правило `prevent_all_changes` устарело. Вместо него используйте связку правил `prevent_creation` и `prevent_update`.

            {% endnote %}
            <!-- endsource: ru/_includes/sourcecraft/branch-policies-deprecated-rule.md -->

        * `prevent_deletion` — нельзя удалять ветку или тег.
        * `prevent_creation` — нельзя создавать ветку или тег.
        * `prevent_update` — нельзя вносить изменения в ветку или тег после создания (запрещены `push`, `force push`, удаление и слияние через предложение изменений).
      <!-- endsource: ru/_includes/sourcecraft/branch-policies-config-template.md -->

      Синтаксис настроек на уровне организации идентичен синтаксису настроек на уровне репозитория.

      <!-- source: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->
      {% note tip %}

      Для групповой фильтрации рекомендуется использовать паттерн `**`, поскольку простой паттерн `*` не предусматривает совпадения в выражениях с `/`.

      {% endnote %}
      <!-- endsource: ru/_includes/sourcecraft/wildcard-pattern-tip.md -->

  1. Добавьте файл конфигурации в индекс `git`, сделайте коммит и отправьте изменения:

      ```bash
      git add .sourcecraft/branches.yaml
      git commit -m "Добавлен файл с политиками веток для организации"
      git push -u origin <имя_главной_ветки>
      ```

{% endlist %}


#### Полезные ссылки {#see-also}

* [Настроить политику доступа в организации SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-policies.md)
* [Настроить пользовательские поля задач в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-custom-fields.md)
* [Конфигурация параметров организации в виде кода в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/org-config.md)
* [Правила ревью кода в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/code-review.md)
* [Политики веток в SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/branch-policies.md)
* [Настроить правила ревью кода в репозитории SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/code-review.md)
* [Настроить политику веток в репозитории SourceCraft](https://vibe.sourcecraft.dev/portal/docs/ru/sourcecraft/operations/branch-policies.md)
