From 7891638dadc47196790542372f8977af1c7f6977 Mon Sep 17 00:00:00 2001 From: Nikolay Mikhaylichenko Date: Wed, 11 Apr 2018 13:51:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B8=20=D1=81=20=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=BC=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20Gitlab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a774741..b04eb63 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # GitFlow -Модель ветвления в проекте +Модель ветвления в проекте при использовании Gitlab. -Версия 1.0 +Версия 1.1 ![Образец ветвления](img/title.png) @@ -19,6 +19,8 @@ Ветвь *develop* считается *основной ветвью разработки*. Хранящийся в ней код в любой момент времени должен содержать самые последние изданные изменения, необходимые для следующего релиза. +В gitlab эти ветви помечаются как *protected*. Недопускается коммитить в главные ветви, разрешено только вливать вспомогательные ветви. + ## Вспомогательные ветви Вспомогательные ветви используются для распараллеливания разработки между членами команды. В отличие от главных ветвей, эти ветви всегда имеют ограниченный срок жизни. Каждая из них в конечном итоге рано или поздно удаляется. @@ -43,24 +45,47 @@ ### Создание ветви функциональности (feature branch) -При начале работы над новой функциональностью делается ответвление от ветви разработки (develop) +При начале работы над новой функциональностью на машине разработчика делается обновление ветки разработки (develop) и ответвление от нее. ```bash -git checkout -b myfeature develop +git checkout develop +git pull +git checkout -b myfeature ``` ### Добавление завершённой функциональности в develop Завершённая функциональность (фича) вливается обратно в ветвь разработки (develop) и попадает в следующий релиз. +Общий порядок сливания ветви функциональности и основной ветви разработки: + +1) Тестирование функциональности + +2) Вливание актульной ветви develop в текущую ветвь функциональности + +3) Тестирование после слияния + +4) публикование ветви функциональности в origin + +5) запрос *Merge Request*, который должен быть готов к автоматическому слиянию. + ```bash +# запускаем тесты +./run-tests +# перходим в ветвь develop git checkout develop -git merge --no-ff myfeature -git branch -d myfeature -git push origin develop +# получаем крайние изменения +git pull +# переходим в функциональную ветвь +get checkout myfeature +# сливаем с ветвью develop +git merge develop +# устраняем конфликты и запускаем тесты +./run-tests +# заливаем функциональную ветвь в origin +git push origin myfeature ``` -> Флаг --no-ff вынуждает Git всегда создавать новый объект коммита при слиянии, даже если слияние может быть осуществлено алгоритмом fast-forward. Это позволяет не терять информацию о том, что ветка существовала, и группирует вместе все внесённые изменения ![Ветвь функциональностей](img/feature_branches.png) @@ -84,10 +109,11 @@ git push origin develop Ветвь релиза создаётся из ветви разработки (develop). ```bash -git checkout -b release-1.2 develop +git checkout develop +git pull +git checkout -b release-1.2 ./bump-version.sh 1.2 git commit -a -m "Bumped version number to 1.2" -# если не в origin git push -u origin release-1.2 ``` -- GitLab