Стек запросов на слияние и смена целевой ветки

Info

В этом руководстве описано управление ветками запроса на слияние: ручное изменение целевой ветки и объединение зависимых запросов в стек. Изменение целевой ветки перенаправляет запрос в актуальную ветку, а стек упрощает ревью и последовательное вливание связанных изменений.

Изменение целевой ветки запроса

Целевая ветка — ветка, в которую выполняется слияние изменений запроса. Если запрос открыт и у вас есть права на запись, вы можете изменить его целевую ветку прямо на странице запроса.

Чтобы изменить целевую ветку:

  1. Откройте запрос на слияние.
  2. В шапке запроса найдите блок с ветками. Целевая ветка отображается в виде поля с выпадающим списком.
  3. Откройте список и выберите новую ветку.
  4. Подтвердите изменение в окне Изменить целевую ветку?, нажав Изменить.

Warning

При смене целевой ветки некоторые коммиты из предыдущей целевой ветки могут исчезнуть из истории изменений, а существующие комментарии к ревью — устареть или потерять привязку к коду.

После смены целевой ветки GitVerse пересчитывает точку расхождения веток и статус запроса. Если изменения конфликтуют с новой целевой веткой, запрос помечается как конфликтующий. Об успешном изменении вы узнаете из уведомления в верхней части страницы.

Что такое стек запросов на слияние

Стек запросов на слияние — это цепочка связанных запросов одного репозитория, в которой целевая ветка каждого следующего запроса совпадает с исходной веткой предыдущего. Стек отражает последовательность зависимых изменений: каждый следующий запрос строится поверх изменений предыдущего.

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

Главное преимущество стека — автоматическое изменение целевой ветки. Когда родительский запрос влит, целевая ветка дочернего запроса автоматически обновляется без участия пользователя, поэтому цепочка зависимых изменений всегда остается актуальной.

Автоматическое перенацеливание запроса

Если запрос входит в стек, при вливании его родительского запроса GitVerse автоматически переводит дочерний запрос на актуальную целевую ветку и перебазирует его на новые изменения. Пользователь не выполняет никаких действий, а в ленте запроса появляется запись об автоматической смене ветки.

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

Создание стека

Стек формируется из открытых запросов на слияние. Создать стек можно при создании нового запроса или для уже существующего открытого запроса.

Чтобы создать стек при создании запроса:

  1. На странице создания запроса укажите исходную и целевую ветки.
  2. Если для выбранных веток найдена цепочка запросов, над формой отобразится блок с галочкой Создать стек запросов на слияние или Добавить в существующий стек.
  3. В блоке отображается перечень запросов, с которыми новый запрос будет объединен в стек. Запросы, уже входящие в стек, отделены от запросов, которые добавляются к нему, разделителем Были добавлены в стек.
  4. Отметьте галочку и нажмите Создать запрос.

Чтобы создать стек для существующего запроса:

  1. Откройте открытый запрос на слияние.
  2. Если над запросом отображается баннер о возможности добавить запрос в стек, нажмите Посмотреть стек.
  3. В окне Формирование стека запросов на слияние проверьте цепочку запросов и нажмите Создать стек или Добавить в стек.

Просмотр стека

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

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

Расформирование стека

Расформировать стек можно на странице любого запроса, входящего в стек.

  1. В шапке запроса нажмите Добавлен стек.
  2. В окне Стек запросов на слияние нажмите Расформировать стек.
  3. Подтвердите расформирование в окне Расформирование стека, нажав Расформировать.

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

Ограничения

При работе со стеком учитывайте следующие ограничения:

  • в стек можно объединить только запросы одного репозитория;
  • цепочку образуют открытые запросы, в которых целевая ветка следующего запроса совпадает с исходной веткой предыдущего;
  • на развилке в стек можно взять только одну ветку;
  • запрос, входящий в стек, не может изменить целевую ветку;
  • изменить целевую ветку нельзя у закрытого или уже влитого запроса.

Стек ограничивает смену целевой ветки у входящих в него запросов, чтобы цепочка зависимых изменений не нарушалась.