Недавно я изучал основанную на соединительных линиях разработку (https://trunkbaseddevelopment.com) и то, что мы делаем, прекрасно подходит для этого подхода (небольшая команда, частые выпуски, некоторые прямые коммиты или кратковременные ветки и т. Д.).
Единственная моя борьба - помечать релизы. Мы выполняем CI, но не все приходят в производство, и мы хотим увеличить (изменить) версию, как только код будет отправлен в среду заказчика.
Каким образом при разработке базовых линий (в идиоматическом смысле) я должен делать релиз? Как вы себя чувствуете с релизом коммитов на master? Я вижу два подхода (я использую бит Java + Maven, который просто мешает).
Подход № 1
- // информация о версии в транке: 'SNAPSHOT'
- git checkout -b release / 1.11
- // обновить версию в ветке релиза и зафиксировать
- // построить полный проект и выпустить
- мастер проверки git
- // продолжить с функциями
Подход № 2
- // информация о версии в транке: '1.11-SNAPSHOT'
- Git Branch Release / 1.11
- // обновить версию в основной ветке до 1.12-SNAPSHOT '
- git checkout release / 1.11
- // обновить версию в ветке релиза до '1.11' и зафиксировать
- // построить полный проект и выпустить
- мастер проверки git
- // продолжить с функциями
Второй подход оставляет один коммит в истории репозитория, о котором я не уверен, как к нему относиться. Последний подход делает код немного более прослеживаемым, а процесс выпуска - немного проще.
Кстати, я не особо беспокоюсь об ошибках и т. Д. Мы выпускаем новую версию. Но если требуется исправление, мы планируем выбрать вишню