32
Git-flow: как построить процесс разработки и быстро получать любую версию продукта Антон Григорьев SUPER SILA

Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать любую версию продукта

Embed Size (px)

Citation preview

Git-flow: как построить процесс разработки и быстро получать любую версию продуктаАнтон ГригорьевSUPER SILA

anton
Рассказать о себе.

Что такое git-flow?

anton
Задать вопросы аудитории:1. Кто знает, что такое git-flow?2. Кто использует git-flow?3. Кто пользуется автосборкой продукта или непрерывной интеграцией?4. Кто пользуется системами контроля версий?5. Кто автоматически прогоняет тесты?6. Кто ничего не понял, из того, что я спросил?

Что такое git-flow?Дополнительный инструментарий для работы с ветками gitИнструмент разработки новых функций продуктаУдобный механизм получения версий продуктаРабочий процесс

anton
как новых, так и старых

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

anton
Рассказываю историиОпрашиваю аудиторию

Работа с ветками в git

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

v0.2.1v0.2V0.1

anton
Кто понимает, что такое коммит?

Основные ветки: dev и master v0.2.

1v0.2V0.1

Работает

Работает

Работает

Работает

РаботаетRelease

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Ветка функционала: feature v0.2.

1v0.2V0.1

Интеграция

Функциональность

В разработке

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Ветка новой версии: release v0.2.

1v0.2V0.1

Исправления

Новая версия

Помечено тегом

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

anton
Нельзя просто так взять и добавить новый функционал в релиз

Ветка исправления: hotfix

Release

Hotfix

v0.2.1v0.2V0.1

Исправления

Исправленная версия

Исправить в текущей версии

Develop

Feature/Android

Feature/Purchase

Master

Работа с ветками в git

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

v0.2.1v0.2V0.1

Git-flow: тестирование

VCS

Проверка версии

Доработка

Коммит

Сборка

Разработчик

CI

QA

1

2

34

DONE

anton
Тут лучше сделать диаграмму типа flow

Получение новых версий master рабочая версия для клиентаdevelo

p рабочая версия для команды

release тестирование новой версии

hotfix тестирование исправления

feature разрабатываемая функциональность

anton
Связь с Continuous Integration

Unity Cloud Build

Unity Cloud Build targets

TeamCity

Работа по git-flow в SourceTree

Работа по git-flow в cmd

Работа по git-flow в VS

Git-flow в SVN

/tag master/trunk develop

feature/branches

Кому подойдет git-flowПостоянные обновленияНе нужно поддерживать старые версииИдеален для Agile-команд

Какие у нас были проблемы

Проблемы с слиянием ветокПоддержка нескольких серверовНесколько версий баз данныхТяжело обучить непрограммистовНе работает с TFS

Какие у нас были проблемы

Проблемы с слиянием ветокПоддержка нескольких серверовНесколько версий баз данныхТяжело обучить непрограммистовНе работает с TFS

Dev Test

Release

Какие у нас были проблемы

Проблемы с слиянием ветокПоддержка нескольких серверовНесколько версий баз данныхТяжело обучить непрограммистовНе работает с TFS

Какие у нас были проблемы

Проблемы с слиянием ветокПоддержка нескольких серверовНесколько версий баз данныхТяжело обучить непрограммистовНе работает с TFS

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

v0.2.1v0.2V0.1

Работает

Работает

Работает

Работает

РаботаетRelease

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

v0.2.1v0.2V0.1

ФункциональностьRelease

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

v0.2.1v0.2V0.1

Синхронизация

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

v0.2.1v0.2V0.1

Исправления

Release

Develop

Feature/Android

Feature/Purchase

Hotfix

Master

Best practicesНельзя коммитить в master!Каждый коммит в develop должен быть рабочимЗаводите ветку на новую функциональностьЧаще вливать develop в featureНет новой функциональности в /releaseНастроить CI серверПроверка сборок и автотесты

Полезно почитатьSmart branching with SourceTree and git-flowУдачная модель ветвления для Git / A successful git branching modelYet another continuous integration storyWorkflows with git-flowWhy arent you using git-flowAtlassian git tutorials: comparing workflows

Спасибо за внимание!

[email protected]: antongrigoryevFacebook: antonygrigoryev

anton
Кто захотел попробовать git-flow?Кому он показался бесполезным?