Стек запросов на слияние и смена целевой ветки
Info
В этом руководстве описано управление ветками запроса на слияние: ручное изменение целевой ветки и объединение зависимых запросов в стек. Изменение целевой ветки перенаправляет запрос в актуальную ветку, а стек упрощает ревью и последовательное вливание связанных изменений.
Изменение целевой ветки запроса
Целевая ветка — ветка, в которую выполняется слияние изменений запроса. Если запрос открыт и у вас есть права на запись, вы можете изменить его целевую ветку прямо на странице запроса.
Чтобы изменить целевую ветку:
- Откройте запрос на слияние.
- В шапке запроса найдите блок с ветками. Целевая ветка отображается в виде поля с выпадающим списком.
- Откройте список и выберите новую ветку.
- Подтвердите изменение в окне Изменить целевую ветку?, нажав Изменить.
Warning
При смене целевой ветки некоторые коммиты из предыдущей целевой ветки могут исчезнуть из истории изменений, а существующие комментарии к ревью — устареть или потерять привязку к коду.
После смены целевой ветки GitVerse пересчитывает точку расхождения веток и статус запроса. Если изменения конфликтуют с новой целевой веткой, запрос помечается как конфликтующий. Об успешном изменении вы узнаете из уведомления в верхней части страницы.
Что такое стек запросов на слияние
Стек запросов на слияние — это цепочка связанных запросов одного репозитория, в которой целевая ветка каждого следующего запроса совпадает с исходной веткой предыдущего. Стек отражает последовательность зависимых изменений: каждый следующий запрос строится поверх изменений предыдущего.
Стек удобен, когда крупную задачу нужно разбить на несколько зависимых запросов. Вместо одного большого изменения вы создаете несколько меньших, которые проходят ревью и вливаются по очереди.
Главное преимущество стека — автоматическое изменение целевой ветки. Когда родительский запрос влит, целевая ветка дочернего запроса автоматически обновляется без участия пользователя, поэтому цепочка зависимых изменений всегда остается актуальной.
Автоматическое перенацеливание запроса
Если запрос входит в стек, при вливании его родительского запроса GitVerse автоматически переводит дочерний запрос на актуальную целевую ветку и перебазирует его на новые изменения. Пользователь не выполняет никаких действий, а в ленте запроса появляется запись об автоматической смене ветки.
Если автоматическое перенацеливание невозможно, дочерний запрос закрывается, а в ленте появляется запись о неудачной смене ветки с указанием причины.
Создание стека
Стек формируется из открытых запросов на слияние. Создать стек можно при создании нового запроса или для уже существующего открытого запроса.
Чтобы создать стек при создании запроса:
- На странице создания запроса укажите исходную и целевую ветки.
- Если для выбранных веток найдена цепочка запросов, над формой отобразится блок с галочкой Создать стек запросов на слияние или Добавить в существующий стек.
- В блоке отображается перечень запросов, с которыми новый запрос будет объединен в стек. Запросы, уже входящие в стек, отделены от запросов, которые добавляются к нему, разделителем Были добавлены в стек.
- Отметьте галочку и нажмите Создать запрос.
Чтобы создать стек для существующего запроса:
- Откройте открытый запрос на слияние.
- Если над запросом отображается баннер о возможности добавить запрос в стек, нажмите Посмотреть стек.
- В окне Формирование стека запросов на слияние проверьте цепочку запросов и нажмите Создать стек или Добавить в стек.
Просмотр стека
Просмотр стека доступен на странице запроса, входящего в стек. В шапке такого запроса отображается кнопка Добавлен стек — нажмите ее, чтобы открыть окно Стек запросов на слияние со списком запросов стека.
В окне стека запросы отображаются от верхнего к нижнему: вверху находится последний запрос цепочки, внизу — запрос, который вливается в общую базовую ветку, и сама базовая ветка.
Расформирование стека
Расформировать стек можно на странице любого запроса, входящего в стек.
- В шапке запроса нажмите Добавлен стек.
- В окне Стек запросов на слияние нажмите Расформировать стек.
- Подтвердите расформирование в окне Расформирование стека, нажав Расформировать.
После расформирования запросы перестают входить в стек, и автоматическое перенацеливание для них больше не выполняется. В любой момент стек можно сформировать заново.
Ограничения
При работе со стеком учитывайте следующие ограничения:
- в стек можно объединить только запросы одного репозитория;
- цепочку образуют открытые запросы, в которых целевая ветка следующего запроса совпадает с исходной веткой предыдущего;
- на развилке в стек можно взять только одну ветку;
- запрос, входящий в стек, не может изменить целевую ветку;
- изменить целевую ветку нельзя у закрытого или уже влитого запроса.
Стек ограничивает смену целевой ветки у входящих в него запросов, чтобы цепочка зависимых изменений не нарушалась.