Перейти к содержанию

Запросы на слияние


Доступно во всех версиях GitFlic

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

Запросы на слияние содержат в себе следующую информацию:

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

Создание запроса на слияние

Есть несколько стандартных способов создать запрос на слияние от ветки, в которой была проведена работа:

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

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

  • Источник - Исходный проект и ветка, из которых будет создан запрос на слияние. Изменения из исходной ветки будут перенесены в целевую после выполнения слияния. По умолчанию указан текущий проект и рабочая ветка проекта. В качестве исходного проекта возможно выбрать форк.
  • Цель - Целевой проект и ветка, в которые будет создан запрос на слияние. В целевую ветку проекта будут перенесены изменения из исходной после выполнения слияния. По умолчанию указан текущий проект и рабочая ветка проекта.
  • Заголовок - Краткое описание сути запроса на слияние. Не может быть длиннее 100 символов.
  • Описание изменений - Подробное описание изменений, в которое можно прикрепить картинки или ссылки. Блок с описанием запроса на слияние поддерживает форматирование текста в формате Markdawn.
  • Утверждающие - Список участников проекта с ролью не меньше Разработчика, которые, по мнению автора запроса на слияния, должны утвердить данный запрос перед его слиянием.
  • Рецензенты - Список участников проекта с ролью не меньше Разработчика, которые, по мнению автора запроса на слияния, должны убедиться, что предлагаемые изменения верны.
  • Лейблы - Ярлыки, уточняющие категорию запроса на слияние. По умолчанию, в каждом проекте существует стандартный набор лейблов - фича, ошибка, срочный фикс и релиз. Изменить набор лейблов возможно в настройках проекта.
  • Связанные проблемы - Список проблем, которые связаны с данным запросом на слияние.
  • Блокировка запроса - Функция, позволяющая временно заблокировать запрос от выполнения. Поле для описания причины блокировки доступно после активации функции.
  • Удаление исходной ветки - Функция, позволяющая автоматически удалить исходную ветку запроса на слияния после его выполнения.
  • Слияние одним коммитом - Функция, позволяющая выполнить слияния запроса одним коммитом (squash commit).

Создание запроса на слияние

Создание запроса на слияние из форка

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

Если запрос на слияния решает какую-либо проблему, то для их связи необходимо воспользоваться соответствующим полем. Связать запрос с проблемой возможно как при его создании, так и при редактировании уже существующего. Максимально возможно связать до 10 проблем к одному запросу на слияние.

Просмотр запросов на слияние

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

Удаление запросов на слияние.

Удаление запросов на слияние не доступно. Вместо удаления запрос возможно Отменить или Закрыть.

В разделе с дискуссиями любой авторизованный пользователь может поделиться своим мнением о предложенных изменениях. Оставить дискуссию возможно на конкретную строчку в изменениях запроса на слияния. Удалить дискуссию может ее автор или администратор проекта. Каждая открытая дискуссия блокирует запрос от выполнения. После того как дискуссия более не является актуальной (например указанные недочеты в изменениях были исправлены) следует ее закрыть при помощи соответствующей кнопки. Закрыть дискуссию может ее автор или любой участник проекта с ролью не ниже Разработчика.

Изменение дискуссий.

Редактирование текста дискуссии не доступно.

Обсуждения

Кроме того, дополнительные разделы запроса содержат прочую полезную информацию:

Коммиты

Cписок всех коммитов, которые будут перенесены из исходной ветки в целевую.

Коммиты

Конвейеры

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

Конвейеры в запросах из форка

Если запрос на слияние создан из форка, то конвейер результата слияния будет создан в основном проекте. Остальные типы конвейеров будет созданы в форке.

Конвейеры

Безопасность

Функционал доступен в Enterprise версии

Отчеты SAST и DAST, которые будут сформированы в рамках прохождения конвейеров, связанных с запросом на слияние.

Безопасность

Изменения

Список файлов, в которых произошли изменения в рамках запроса на слияние. Доступны два формата отображения изменений - построчный и разделенный. В разделенном формате доступно отображение автора строки - blame.

Изменения

Решение конфликтов

При наличии конфликтов в запросе становится невозможно выполнение слияния. Решить конфликты возможно локально, при помощи командной строки или IDE. Кроме того, доступно решение конфликтов через веб-интерфейс GitFlic. Для этого необходимо нажать кнопку Решить конфликты.

Недоступность решения конфликтов.

Если конфликты появились из-за удаления файлов, то становится недоступным их решение через веб-интерфейс.

Кнопка решения конфликтов

В форме решения конфликтов отобразятся 2 варианта файлов: один из ветки-источника, второй - результирующий из целевой ветки. Для выбора переноса части кода, которую следует слить, необходимо нажать на кнопку со стрелкой. Выбранные изменения будут перенесены в правую часть. В левой части отображено меню со всеми файлами, в которых обнаружены конфликты между двумя ветками. После завершения работы с конфликтами, необходимо нажать "Применить" в верхней части страницы и затем "Коммит". Коммит будет создан в ветку-источник.

Форма решения конфликтов

При продолжении работы с локальной веткой, следует сделать git pull.

Выполнение запроса на слияние

Для выполнения слияния необходимо соблюдение всех условий. Список условий возможно изменить в настройках запросов на слияние:

  • Запрос на слияние не заблокирован - Заблокированный запрос невозможно слить. Разблокировать запрос возможно при его редактировании.
  • Права на слияние - Слияние запросов доступно участникам проекта с ролью Разработчик или пользовательской ролью с доступом к выполнению запросов.
  • Запрос на слияние без конфликтов - Слияние запроса с конфликтами недоступно. Необходимо решить конфликты локально или при помощи веб-интерфейса.
  • Нет файлов, заблокированных другими пользователями - Если, в списке измененных файлов присутствуют файлы, которые заблокированы при помощи команды git lfs lock в локальном репозитории, то слить такой запрос может только пользователь, заблокировавший файлы.
  • Ветка в актуальном состоянии - Для выполнения слияния необходимо наличие изменений между исходной и целевой ветками.
  • Конвейер для последнего коммита завершился успешно - Условие, которое возможно включить в настройках CI/CD. Для его выполнения необходим статус Успех или Предупреждение у конвейера для последнего коммита.
  • Конвейер результата слияния для последнего коммита завершился успешно - Условие, которое возможно включить в настройках CI/CD. Для его выполнения необходим статус Успех или Предупреждение у конвейера результата слияния.
  • Конвейер слияния для последнего коммита завершился успешно - Условие, которое возможно включить в настройках CI/CD. Для его выполнения необходим статус Успех или Предупреждение у конвейера слияния.
  • Есть права на слияния в защищенную ветку - Для выполнения условия необходимо иметь достаточную роль, согласно правилам защиты веток.
  • Необходимые одобрения от утверждающих получены - Условие будет выполнено только при наличии достаточного числа одобрений от Ответственных.
  • Необходимые одобрения от владельцев кода получены - Условие будет выполнено только при наличии достаточного числа одобрений от Владельцев кода.
  • Необходимо перебазировать исходную ветку - Условие, которое может появиться, если выбран метод слияния semi-linear history или semi-linear history. Выполнить перебазирование возможно при помощи кнопки в веб-интерфейсе. Если в запросе присутствуют конфликты, то кнопка для перебазирования не будет доступно, пока конфликты не будут решены.

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

Условия для выполнения слияния

Выполнение запроса при помощи поезда слияния

Функционал доступен в Enterprise версии

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