У нас есть некоторые проблемы с нашим потоком git. У нас есть настроенная версия GitLab Flow. Я опишу это ниже:
Ветви:
- ветви функций
- подготовка
- мастер
- производство
Среды:
- Разработка . Разработчик работает над своей средой с новыми функциями
- Тестирование . Тестовая / демонстрационная среда, в которой можно щелкнуть и проверить проблему, прежде чем приступить к производству. Использует промежуточную ветку
- Производство . Использует производственную ветвь.
Шаги:
- Разработчик извлекает новую ветвь функций из главной ветви.
- Когда разработчик готов, он делает запрос на слияние с промежуточной веткой. Другой разработчик просматривает код и сливается с подготовкой, если код в порядке.
- Когда при тестировании env тестируется одна или несколько функций, мы объединяем каждую ветвь функций с master. После этого мы объединяем основной филиал с производственным филиалом.
Мы производим тег git из производственной ветви при создании рабочей версии. Мы делаем тег git из промежуточной ветви при создании тестовой версии.
Проблемы заключаются в следующем:
Когда кто-то делает новый запрос на слияние в промежуточную ветку после выпуск (когда коммиты были объединены с мастером). GitLab показывает коммиты из ожидаемой ветви функций И все коммиты, которые были объединены с мастером (потому что эта новая ветка функций была извлечена из мастера). Это очень затрудняет анализ кода этой функции.
Мы решили эту проблему путем объединения основной ветки с промежуточной ветвью после каждой рабочей версии (даже если коммиты уже должны быть в промежуточной ветке). Если мы это сделаем, обзор кода работает нормально. Но теперь, когда мы пытаемся сделать автоматический журнал изменений, используя команду git log.
Как это:
Для тестирования env: git log --pretty=oneline --no-merges testing-1.0.34..testing-1.0.35
Для производства env: git log --pretty=oneline --no-merges release-1.0.12..release-1.0.13
Работает нормально для производства env (просто нужно удалить несколько дубликатов и тому подобное). Но чтобы сделать журнал изменений для тестирования, мы получаем все коммиты из новой функции И все коммиты из «перезагрузки» (мастер-сценарий слияния).
Как мы можем улучшить наш поток? Я подозреваю, что «сброс» (слияние мастера с этапом) не должен быть необходим, потому что этапирование уже имеет те изменения, которые мы теперь объединяем снова.