SlideShare a Scribd company logo
15 января 2016, г. Москва
Сергей Максимов
Старший программист группы Java-сервисов
Git Flow – процесс
управления
конфигурацией проектов
СОДЕРЖАНИЕ
 Наши ценности
 Git – это DVCS
– Сравнение с Subversion
– Сравнение с Mercurial
 Состав хранилища Git
 Сценарии использования GitFlow
– Текущая разработка
– Стабилизация (Feature
Freeze)
– Релиз (Code Freeze)
– Заплатки (Hot fixing)
 Запросы на слияние (GitLab)
– Code Review
– Pre-build
 Особенности Git
– Флаг --no-ff
– Удаление временных веток
– Настройка прав на уровне
веток
– rebase / merge
Наши ценности
Extreme
Programming (XP)Agile
• http://agilemanifesto.org/
• http://www.extremeprogramming.org/
 Коллективное владение кодом
– Ревью кода коллегами
 Непрерывная интеграция
– Автоматическое
тестирование
– Стандарты кодирования
 Частые выпуски версий
Git Flow -- процесс управления конфигурацией проектов 3
Git
Git Flow -- процесс управления конфигурацией проектов 4
Git – распределённая система контроля
версий (DVCS)
5
• был создан Линусом Торвальдсом для управления разработкой ядра Linux
• первая версия выпущена 7 апреля 2005 года
Децентрализац
ия
Локальные
ветки
Управление
правами
Git + + +
Mercurial + - -
Subversion - - -
Git Flow -- процесс управления конфигурацией проектов
Состав хранилища Git
6
Постоянные ветки:
• master – история релизов
• develop – ветвь текущей
разработки (pre-stable)
Временные ветки:
• feature – работа над новой
функциональностью (non-
stable)
• release – стабилизация
• hotfix – заплатки
Git Flow -- процесс управления конфигурацией проектов
Варианты использования Git Flow
Текущая разработка
7
• Порождаются от develop
• Вливаются в develop
• В именовании удобно использовать ID задачи Jira,
например, dev_jadm-445
• В момент публикации кода в ветку develop
• Функциональность не содержит критичных (нарушающих
работу продукта в целом) багов
• Функциональность готова к тестированию QA
• Пройден статический анализ кода
• Пройден ревью коллегами
• Проведен прогон тестов
Git Flow -- процесс управления конфигурацией проектов
Варианты использования Git Flow
Стабилизация и релиз (Feature / Code Freeze)
8
• Порождаются от develop
• Вливаются в develop, master
• В именовании используется префикс
release_, например, release_2.1
• В ветку release не публикуется новая
функциональность, только исправления
ошибок
• При публикации из release в master
проставляется метка с номером релизной
версии
Git Flow -- процесс управления конфигурацией проектов
Варианты использования Git Flow
Заплатки (Hot fixing)
9
• Порождаются от master
• Вливаются в develop, master
• В именовании используется префикс
hotfix_, например, hotfix_1.2
• В ветку hotfix не публикуется новая
функциональность, только исправления
ошибок
• При публикации из hotfix в master
проставляется метка с номером новой
релизной версии
Git Flow -- процесс управления конфигурацией проектов
GitLab
Git Flow -- процесс управления конфигурацией проектов 10
GitLab – система управления хранилищами Git
11Git Flow -- процесс управления конфигурацией проектов
http://gitlab.moex.com/
Запросы на слияние (Merge Requests)
Git Flow -- процесс управления конфигурацией проектов 12
Возможности:
1. Code review
2. Pre-Merge
Build
3. Jira
интеграция
4. Confluence
интеграция?
Запрос на слияние c develop. Критерии
приёмки (пример)
Git Flow -- процесс управления конфигурацией проектов 13
1. (Н) Код не содержит критических
ошибок, нарушающих работу продукта в
целом
2. (Н) Функциональность готова для
тестирования
3. (Ф) Пройден Code Review
4. (Ф) Пройдены автоматические тесты
5. (Ф) Не нарушен порог качества для
статического и стилевого анализа кода
6. (Ф) Покрытие кода тестами сохранено
на приемлемом уровне
Н – неформальный критерий
Ф – формальный критерий
Особенности Git
Git Flow -- процесс управления конфигурацией проектов 14
Особенности Git. Флаг no-ff
Git Flow -- процесс управления конфигурацией проектов 15
• Флаг no-ff вынуждает Git всегда
создавать объект коммита при
слиянии
• Позволяет сгруппировать несколько
коммитов (feature ветка будет
удалена)
• Может образоваться некоторое
количество пустых объектов коммитов
Особенности Git. Настройка прав и удаление
временных веток
Git Flow -- процесс управления конфигурацией проектов 16
• Временные ветки (feature, release,
hotfix) удаляются после слияния с
ветками назначения (develop и/или
master)
• Прямой push в ветки master, develop
должен быть запрещён
• Вместо push для веток master, develop
используется механизм Merge Request
Особенности Git. Rebase vs Merge
Git Flow -- процесс управления конфигурацией проектов 17
• Rebase
• позволяет линеаризовать историю изменений
• меняет контекст, в котором были сделаны
коммиты
• теряет информацию о слияниях веток
• Merge
• не изменяет контекст коммитов
• сохраняет информацию о слияниях веток
• создаёт дополнительные коммиты
• git bisect адекватно работает как с
линейной (rebase), так и с нелинейной
(merge) историей
• Проблемы с rebase
http://habrahabr.ru/post/179123/
• Руководство по rebase
http://habrahabr.ru/post/161009/
Благодарю за
внимание!
Git Flow -- процесс управления конфигурацией проектов 18
Вопросы…
Список для чтения
Git Flow -- процесс управления конфигурацией проектов 19
Тема Источник
Agile Manifesto http://agilemanifesto.org/
Extreme
Programming
http://www.extremeprogramming.org/
Git SCM https://git-scm.com/
Git Flow http://habrahabr.ru/post/106912/
GitLab https://about.gitlab.com/
Rebase problems http://habrahabr.ru/post/179123/
Rebase how-to http://habrahabr.ru/post/161009/

More Related Content

PPTX
Презентация Git-flow (на русском)
PDF
Фламп на спидах или ка релизить каждый день
PPTX
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
PPTX
системы контроля версий
PPTX
Аналитика в проектах: TFS + Qlik
ODP
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
PDF
It meetup cd
PDF
Владислав Чернов, Badoo
Презентация Git-flow (на русском)
Фламп на спидах или ка релизить каждый день
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
системы контроля версий
Аналитика в проектах: TFS + Qlik
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
It meetup cd
Владислав Чернов, Badoo

What's hot (20)

PPTX
Развитие сообщества Open DevOps Community
PPTX
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
PPTX
Типовая сборка и деплой продуктов в Positive Technologies
PDF
Основы работы с Git
PDF
"Доклад не про React", Антон Виноградов, MoscowJS 27
PDF
Plugin development for intelli j platform
PPTX
Как мы собираем проекты в выделенном окружении в Windows Docker
PDF
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
PPTX
Адаптация Git flow при коллективной разработке на 1с
PPTX
DevOps для Legacy-продуктов
PPTX
Автоматическая сборка и развертывание на платформе 1C
PDF
Continuous integration
PDF
1. RAD Studio Tokyo What's new Введение (К.Раннев)
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PPTX
Gradle. Новый уровень автоматизации для Android
PDF
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
PDF
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
Развитие сообщества Open DevOps Community
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Типовая сборка и деплой продуктов в Positive Technologies
Основы работы с Git
"Доклад не про React", Антон Виноградов, MoscowJS 27
Plugin development for intelli j platform
Как мы собираем проекты в выделенном окружении в Windows Docker
Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013. "AIDA. Непрерывная инт...
Адаптация Git flow при коллективной разработке на 1с
DevOps для Legacy-продуктов
Автоматическая сборка и развертывание на платформе 1C
Continuous integration
1. RAD Studio Tokyo What's new Введение (К.Раннев)
Cистемы автоматической сборки проектов (Полина Фоминых)
Иван Крутов - Автоматизация сборки Java-проекта
Gradle. Новый уровень автоматизации для Android
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в крупном ин...
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
Ad

Viewers also liked (20)

PPT
Continuous integration with TeamCity
PPTX
DersuDev #1 2015 - Continous Integration
PPTX
Такой (не)безопасный веб
ODP
Распределенные системы контоля версия на примере git
PDF
Сергей Сергеев "Менеджмент кода, или Почему SCM"
PPTX
A Piece of case.
PPTX
Успешная карьера в современной разработки программного обеспечения
PDF
Сергей Сергеев — Maintainer кода в большом проекте
KEY
Git flow
PDF
Никита Шультайс. "Система управления версиями git"
PPT
что такое Git и как с ним бороться
PDF
Нужно ли внедрять DevOps. Как добиться чего-то от эксплуатации / Андрей Шорин...
PPT
Continuous delivery в крупном интернет проекте
PDF
Основы работы с Git
PPTX
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
PDF
Использование сервера Continuous Integration для разработки мобильных приложений
PPTX
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
PPTX
iron man
PDF
Основы Git
PPTX
penetest VS. APT
Continuous integration with TeamCity
DersuDev #1 2015 - Continous Integration
Такой (не)безопасный веб
Распределенные системы контоля версия на примере git
Сергей Сергеев "Менеджмент кода, или Почему SCM"
A Piece of case.
Успешная карьера в современной разработки программного обеспечения
Сергей Сергеев — Maintainer кода в большом проекте
Git flow
Никита Шультайс. "Система управления версиями git"
что такое Git и как с ним бороться
Нужно ли внедрять DevOps. Как добиться чего-то от эксплуатации / Андрей Шорин...
Continuous delivery в крупном интернет проекте
Основы работы с Git
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
Использование сервера Continuous Integration для разработки мобильных приложений
Начало работы с Git (Visual Studio 2013, Bitbucket) - version 2013
iron man
Основы Git
penetest VS. APT
Ad

Similar to GitFlow_MOEX (20)

PDF
Giflow
PPTX
Scino: DVCS на примере Git
PPTX
GIT: что внутри, и как это работает?
PDF
Сергей Сергеев - Системы контроля версий
PPTX
Git for you
PDF
Software engineering seminars: git
PPTX
Git presentation
PDF
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
PDF
Системы контроля версий
PDF
Git для начинающих
PDF
Про Git
PPT
Как удержать проект от анархии с помощью Git
PPT
Как удержать проект от анархии с помощью Git
PDF
Git, smart git & gitflow
PPT
Системы контроля версий
PDF
Приручаем Git
PPTX
Controlul versiunilor
ODP
Системы управления версиями (VCS). Знакомство с Git.
Giflow
Scino: DVCS на примере Git
GIT: что внутри, и как это работает?
Сергей Сергеев - Системы контроля версий
Git for you
Software engineering seminars: git
Git presentation
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
Системы контроля версий
Git для начинающих
Про Git
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
Git, smart git & gitflow
Системы контроля версий
Приручаем Git
Controlul versiunilor
Системы управления версиями (VCS). Знакомство с Git.

GitFlow_MOEX

  • 1. 15 января 2016, г. Москва Сергей Максимов Старший программист группы Java-сервисов Git Flow – процесс управления конфигурацией проектов
  • 2. СОДЕРЖАНИЕ  Наши ценности  Git – это DVCS – Сравнение с Subversion – Сравнение с Mercurial  Состав хранилища Git  Сценарии использования GitFlow – Текущая разработка – Стабилизация (Feature Freeze) – Релиз (Code Freeze) – Заплатки (Hot fixing)  Запросы на слияние (GitLab) – Code Review – Pre-build  Особенности Git – Флаг --no-ff – Удаление временных веток – Настройка прав на уровне веток – rebase / merge
  • 3. Наши ценности Extreme Programming (XP)Agile • http://agilemanifesto.org/ • http://www.extremeprogramming.org/  Коллективное владение кодом – Ревью кода коллегами  Непрерывная интеграция – Автоматическое тестирование – Стандарты кодирования  Частые выпуски версий Git Flow -- процесс управления конфигурацией проектов 3
  • 4. Git Git Flow -- процесс управления конфигурацией проектов 4
  • 5. Git – распределённая система контроля версий (DVCS) 5 • был создан Линусом Торвальдсом для управления разработкой ядра Linux • первая версия выпущена 7 апреля 2005 года Децентрализац ия Локальные ветки Управление правами Git + + + Mercurial + - - Subversion - - - Git Flow -- процесс управления конфигурацией проектов
  • 6. Состав хранилища Git 6 Постоянные ветки: • master – история релизов • develop – ветвь текущей разработки (pre-stable) Временные ветки: • feature – работа над новой функциональностью (non- stable) • release – стабилизация • hotfix – заплатки Git Flow -- процесс управления конфигурацией проектов
  • 7. Варианты использования Git Flow Текущая разработка 7 • Порождаются от develop • Вливаются в develop • В именовании удобно использовать ID задачи Jira, например, dev_jadm-445 • В момент публикации кода в ветку develop • Функциональность не содержит критичных (нарушающих работу продукта в целом) багов • Функциональность готова к тестированию QA • Пройден статический анализ кода • Пройден ревью коллегами • Проведен прогон тестов Git Flow -- процесс управления конфигурацией проектов
  • 8. Варианты использования Git Flow Стабилизация и релиз (Feature / Code Freeze) 8 • Порождаются от develop • Вливаются в develop, master • В именовании используется префикс release_, например, release_2.1 • В ветку release не публикуется новая функциональность, только исправления ошибок • При публикации из release в master проставляется метка с номером релизной версии Git Flow -- процесс управления конфигурацией проектов
  • 9. Варианты использования Git Flow Заплатки (Hot fixing) 9 • Порождаются от master • Вливаются в develop, master • В именовании используется префикс hotfix_, например, hotfix_1.2 • В ветку hotfix не публикуется новая функциональность, только исправления ошибок • При публикации из hotfix в master проставляется метка с номером новой релизной версии Git Flow -- процесс управления конфигурацией проектов
  • 10. GitLab Git Flow -- процесс управления конфигурацией проектов 10
  • 11. GitLab – система управления хранилищами Git 11Git Flow -- процесс управления конфигурацией проектов http://gitlab.moex.com/
  • 12. Запросы на слияние (Merge Requests) Git Flow -- процесс управления конфигурацией проектов 12 Возможности: 1. Code review 2. Pre-Merge Build 3. Jira интеграция 4. Confluence интеграция?
  • 13. Запрос на слияние c develop. Критерии приёмки (пример) Git Flow -- процесс управления конфигурацией проектов 13 1. (Н) Код не содержит критических ошибок, нарушающих работу продукта в целом 2. (Н) Функциональность готова для тестирования 3. (Ф) Пройден Code Review 4. (Ф) Пройдены автоматические тесты 5. (Ф) Не нарушен порог качества для статического и стилевого анализа кода 6. (Ф) Покрытие кода тестами сохранено на приемлемом уровне Н – неформальный критерий Ф – формальный критерий
  • 14. Особенности Git Git Flow -- процесс управления конфигурацией проектов 14
  • 15. Особенности Git. Флаг no-ff Git Flow -- процесс управления конфигурацией проектов 15 • Флаг no-ff вынуждает Git всегда создавать объект коммита при слиянии • Позволяет сгруппировать несколько коммитов (feature ветка будет удалена) • Может образоваться некоторое количество пустых объектов коммитов
  • 16. Особенности Git. Настройка прав и удаление временных веток Git Flow -- процесс управления конфигурацией проектов 16 • Временные ветки (feature, release, hotfix) удаляются после слияния с ветками назначения (develop и/или master) • Прямой push в ветки master, develop должен быть запрещён • Вместо push для веток master, develop используется механизм Merge Request
  • 17. Особенности Git. Rebase vs Merge Git Flow -- процесс управления конфигурацией проектов 17 • Rebase • позволяет линеаризовать историю изменений • меняет контекст, в котором были сделаны коммиты • теряет информацию о слияниях веток • Merge • не изменяет контекст коммитов • сохраняет информацию о слияниях веток • создаёт дополнительные коммиты • git bisect адекватно работает как с линейной (rebase), так и с нелинейной (merge) историей • Проблемы с rebase http://habrahabr.ru/post/179123/ • Руководство по rebase http://habrahabr.ru/post/161009/
  • 18. Благодарю за внимание! Git Flow -- процесс управления конфигурацией проектов 18 Вопросы…
  • 19. Список для чтения Git Flow -- процесс управления конфигурацией проектов 19 Тема Источник Agile Manifesto http://agilemanifesto.org/ Extreme Programming http://www.extremeprogramming.org/ Git SCM https://git-scm.com/ Git Flow http://habrahabr.ru/post/106912/ GitLab https://about.gitlab.com/ Rebase problems http://habrahabr.ru/post/179123/ Rebase how-to http://habrahabr.ru/post/161009/