У меня возникли проблемы с пониманием того, как использовать номера версий. В моей команде наш основной рабочий процесс работает следующим образом. Цикл разработки в моей команде выглядит так.
Непрерывная разработка осуществляется в нашей среде разработки. Раз в месяц у нас происходит заморозка кода, когда текущая версия приложения развертывается в отдельной среде контроля качества, где наши специалисты по контролю качества проверяют его на стабильность и наличие ошибок, которые пропустили разработчики. Как только QA будет удовлетворен (это займет от 1 до 2 недель в зависимости от рабочей нагрузки QA), версия QA будет развернута на наших рабочих серверах.
Мы переходим с Subversion на Git, и я пытаюсь разработать нашу стратегию ветвления/выпуска для поддержки этого. Что я хотел бы сделать, так это:
Начальная точка: DEV работает на версии 1.0-SNAPSHOT на master
При заморозке кода: Создайте новую ветвь release-1.0 из master. Увеличьте POM на master до 1.1-SNAPSHOT
После контроля качества: разверните версию 1.0 на нашем сервере связи и пометьте репозиторий. Объедините release-1.0 в master, чтобы любые исправления ошибок или изменения были интегрированы в будущие выпуски.
Проблема в том, что когда я объединяю release-1.0 в master, я получаю конфликт слияния с версией POM. <version>1.1-SNAPSHOT</version> конфликтует с <version>1.0</version>. Конфликт слияния легко разрешить, но он не позволяет мне автоматизировать этот шаг.
В идеале ветку релиза можно сохранить как ветку обслуживания с разрабатываемой версией 1.0.1-SNAPSHOT, но я не хочу, чтобы это изменение было интегрировано в основную ветку. В противном случае я просто удалю ветку выпуска и полагаюсь на тег для создания любых веток с исправлениями для версии 1.0.1, поскольку это только для критических производственных проблем, которые не могут дождаться следующего цикла выпуска.
Я хотел бы избежать вишневого выбора коммитов из ветки релиза в мастер, просто чтобы исключить возможность чего-то упустить и не слиться с мастером.
Есть ли способ управлять этим с помощью плагина maven-release, или я обречен делать это вручную?
--theirs, либо--ours, чтобы безоговорочно принять версию вещей одного родителя. Но поскольку у вас, вероятно, есть другие файлы, кроме вашего POM, вы выбросите ребенка вместе с водой из ванны, слепо принимая одну версию каждого файла вместо другой. - person Tim Biegeleisen   schedule 15.12.2016