Выпуск стабильной версии из разрабатываемых версий с GitFlow
Поэтому в настоящее время мы работаем над командой и используем GitFlow в качестве рабочего процесса контроля версий в Git. Мы работаем в итерациях, где каждую неделю выполняем производственное развертывание, содержащее все заявки, проверенные QA и принятые владельцем продукта. Это означает, что мы, возможно, развернули 20 заявок для тестирования, 15 заявок прошли QA и будут добавлены к выпуску. 5 билетов, которые отправляются обратно разработчику, могут быть не включены в релиз.
В нашем контроле версий у нас есть следующие ветки:
- feature / * - Разработчик (и), работающий с конкретным тикетом, фиксирует их и отправляет свои изменения до тех пор, пока не завершит работу, выполненную для тикета. Эта ветка создана на основе ветки разработки и регулярно вносит изменения из разработки в ногу с другими разработчиками.
- разработка - В эту ветку разработчик объединяет изменения, сделанные в ветке возможностей. Также наша CI-среда слушает эту ветку для создания и развертывания последней тестовой версии в тестовой среде.
- release / xx - эта ветка используется для подготовки нового релиза для доставки владельцу продукта /UAT. Здесь наша проблема. Поскольку мы не можем выпустить все билеты на производство, мы не можем просто объединить все от разработки до этой ветви. Поэтому на данный момент мы вручную собираем все вещи, что действительно ужасно, поскольку все организовано и сопровождается множеством конфликтов. Кроме того, объединение всего от разработки, но возврат билетов, которые не могут быть запущены, не кажется устойчивым решением.
- master - стабильная версия приложения.
Моя первоначальная идея состояла в том, чтобы создать ветви функций на основе master-ветви, но это означало бы, что разработчики всегда разрабатывают более старую версию приложения. Это снова может привести к проблемам интеграции позже в процессе.
Я полагаю, что я не единственный с этой проблемой. Каков ваш опыт с этой проблемой?
1 ответ
Мне очень нравится рабочий процесс git, описанный в этой статье: " http://nvie.com/posts/a-successful-git-branching-model/"
Вот как они рекомендуют создавать / объединять ветви функций:
Создание ветки
Когда вы начнете работать над новой функцией, отойдите от ветки разработки.
$ git checkout -b myfeature develop
Перешел на новую ветку "myfeature"
Включение готовой функции по разработке
Готовые функции могут быть объединены в ветку разработки, чтобы обязательно добавить их в следующий выпуск:
$ git checkout develop
Перешел на ветку "развиваюсь"
$ git merge --no-ff myfeature
Обновление ea1b82a..05e9557 (сводка изменений)
$ git branch -d myfeature
Удален филиал myfeature (был 05е9557).
$ git push origin develop
Флаг --no-ff заставляет слияние всегда создавать новый объект фиксации, даже если слияние может быть выполнено с ускоренной перемоткой вперед. Это позволяет избежать потери информации об историческом существовании ветви компонента и объединяет все коммиты, которые вместе добавляли функцию.