Рабочий процесс Gitflow

Рабочий процесс Gitflow Workflow. Будем описывать его с использованием пакета git-flow.

Содержание

1 Общая информация

  • Репозиторий: https://github.com/petervanderdoes/gitflow-avh/
  • Описание модели ветвления: https://nvie.com/posts/a-successful-git-branching-model/
  • Gitflow Workflow опубликована и популяризована Винсентом Дриссеном из компании vie.
  • Gitflow Workflow предполагает выстраивание строгой модели ветвления с учётом выпуска проекта.
  • Данная модель отлично подходит для организации рабочего процесса на основе релизов.
  • Работа по модели Gitflow включает создание отдельной ветки для исправлений ошибок в рабочей среде.
  • Последовательность действий при работе по модели Gitflow:
    • Из ветки master создаётся ветка develop.
    • Из ветки develop создаётся ветка release.
    • Из ветки develop создаются ветки feature.
    • Когда работа над веткой feature завершена, она сливается с веткой develop.
    • Когда работа над веткой релиза release завершена, она сливается в ветки develop и master.
    • Если в master обнаружена проблема, из master создаётся ветка hotfix.
    • Когда работа над веткой исправления hotfix завершена, она сливается в ветки develop и master.

2 Установка программного обеспечения

  • Для Windows используется пакетный менеджер Chocolatey.
  • Git-flow входит в состав пакета git.
    choco install git
    
  • Для MacOS используется пакетный менеджер Homebrew.
    brew install git-flow
    
  • Linux
    • Gentoo
      emerge dev-vcs/git-flow
      
    • Ubuntu
      apt-get install git-flow
      
    • Centos
      • Первоначально нужно установить репозиторий epel (https://fedoraproject.org/wiki/EPEL):
        dnf install epel-release
        
      • Затем, собственно, установить git-flow:
        dnf install gitflow
        
    • Fedora
      • Это программное обеспечение удалено из основного репозитория.
      • Можно установить вручную или из коллекции репозиториев Copr.
      • Установка из коллекции репозиториев Copr (https://copr.fedorainfracloud.org/coprs/elegos/gitflow/):
        # Enable the copr repository
        dnf copr enable elegos/gitflow
        # Install gitflow
        dnf install gitflow
        
      • Установка вручную:
        cd /tmp
        wget --no-check-certificate -q https://raw.github.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh
        chmod +x gitflow-installer.sh
        sudo ./gitflow-installer.sh install stable
        

3 Процесс работы с Gitflow

3.1 Основные ветки (master) и ветки разработки (develop)

Для фиксации истории проекта в рамках этого процесса вместо одной ветки master используются две ветки. В ветке master хранится официальная история релиза, а ветка develop предназначена для объединения всех функций. Кроме того, для удобства рекомендуется присваивать всем коммитам в ветке master номер версии.

При использовании библиотеки расширений git-flow нужно инициализировать структуру в существующем репозитории:

git flow init

Для github параметр Version tag prefix следует установить в v.

После этого проверьте, на какой ветке Вы находитесь:

git branch

3.2 Функциональные ветки (feature)

  • Под каждую новую функцию должна быть отведена собственная ветка, которую можно отправлять в центральный репозиторий для создания резервной копии или совместной работы команды. Ветки feature создаются не на основе master, а на основе develop. Когда работа над функцией завершается, соответствующая ветка сливается обратно с веткой develop. Функции не следует отправлять напрямую в ветку master.

  • Как правило, ветки feature создаются на основе последней ветки develop.

3.2.1 Создание функциональной ветки

Создадим новую функциональную ветку:

git flow feature start feature_branch
  • Далее работаем как обычно.

3.2.2 Окончание работы с функциональной веткой

  • По завершении работы над функцией следует объединить ветку feature_branch с develop:
git flow feature finish feature_branch

3.3 Ветки выпуска (release)

  • Когда в ветке develop оказывается достаточно функций для выпуска, из ветки develop создаётся ветка release. Создание этой ветки запускает следующий цикл выпуска, и с этого момента новые функции добавить больше нельзя — допускается лишь отладка, создание документации и решение других задач. Когда подготовка релиза завершается, ветка release сливается с master и ей присваивается номер версии. После нужно выполнить слияние с веткой develop, в которой с момента создания ветки релиза могли возникнуть изменения.

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

  • Создать новую ветку release можно с помощью следующей команды:

git flow release start 1.0.0
  • Для завершения работы на ветке release используются следующие команды:
git flow release finish 1.0.0

3.4 Ветки исправления (hotfix)

  • Ветки поддержки или ветки hotfix используются для быстрого внесения исправлений в рабочие релизы. Они создаются от ветки master. Это единственная ветка, которая должна быть создана непосредственно от master. Как только исправление завершено, ветку следует объединить с master и develop. Ветка master должна быть помечена обновленным номером версии.

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

  • Ветку hotfix можно создать с помощью следующих команд:

git flow hotfix start hotfix_branch
  • По завершении работы ветка hotfix объединяется с master и develop:
git flow hotfix finish hotfix_branch

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие