В компании, в которой я работаю, мы пытались использовать рабочий процесс Git, который использует следующие ветви:
- Master - содержит коммиты, которые представляют релизы
- Release Candidate(RC) - Временная ветвь, основанная на разработке, чтобы разрешить тестирование перед выпуском
- Разработка - Содержит полную историю разработки приложений
- Ветви функций - Созданы для разработки отдельных функций перед объединением в разработку
Для визуального руководства это в некоторой степени похоже на следующее (за исключением того, что ветвь RC не показана, а ветви объектов объединены перед созданием),
Источник изображения: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
По большей части это работает хорошо.Тем не менее, этот подход ставит контрольно-пропускной пункт между RC и основными ветвями, что, по-видимому, связано с использованием сквош-слияний.
У нас нет проблем при выполнении сквош-слияний между ветвями объектов и разработкой, но для некоторых неизвестныхпричина, когда мы выполняем слияние сквоша между веткой RC и мастером, мы получаем конфликты слияния файлов, указывающие на то, что одни и те же файлы были «отредактированы в обоих».Это предупреждение не отображается при выполнении сквош-слияния между ветвями объектов и разработки, или, по крайней мере, не так, насколько я помню.Любой сквош сливается из ветви объектов, чтобы проявить уважение к тому, что последние изменения имеют приоритет, в то время как слияние сквоша с мастером, похоже, игнорирует тот факт, что те же файлы были добавлены ранее.
Для справки, мы выполняемСквош сливается с помощью Azure DevOps во время выполнения запросов на извлечение.Появляется следующее сообщение об ошибке:
Источник изображения: https://marketplace.visualstudio.com/items?itemName=ms-devlabs.conflicts-tab#overview
Другие примечания:
Существует общий предок между master и ветвями RC / development, который является начальным коммитом.
Этот конфликт слияния файлов, кажется, основываетсяне правильно обрабатывать файлы, которые уже импортированы.Например, между двумя нашими выпусками у нас было более 80 конфликтов файлов с предупреждениями о необходимости добавления файлов, несмотря на то, что файлы с таким же именем и путем уже существуют в главной ветви.
Что я действительно хотел бы знать, так это то, есть ли проблема с выбранным подходом или есть проблемы с инструментами (Git или Azure DevOps)?
Заранее спасибо.