У меня есть несколько кулинарных книг CHEF, которые я развертываю. Каждый из них версионируется в соответствии с семантическим версионированием.
В моей производственной среде используется кулинарная книга 0.1.1
В рабочей среде используется кулинарная книга 0.2.0.
В версии 2.0 есть большое изменение, которое я пока не могу развернуть в рабочей среде. Обнаружена ошибка, которую необходимо исправить в версии 0.1.x. Как мне создать и развернуть поваренную книгу 0.1.2 в рабочей среде, не внося большие изменения в поваренную книгу 2.0 в рабочую среду?
Использование git-flow. Новые выпуски создаются вне ветки разработки. Затем снова слился с разработкой и тестированием. После тестов он затем объединяется с мастером, получает тег git и автоматически развертывается на сервере шеф-повара.
0.1.1 0.2.0
/ \ / \
o-o--------o-o---X---o--------o-o-------- develop
\ \ \
o------------o------------------o------ master
При выпуске поваренной книги ветвь выпуска удаляется.
Я предполагаю, что мне нужно проверить X
, а затем создать поваренную книгу 0.1.2. Однако, когда я пытаюсь объединить поваренную книгу 0.1.2 в ветку разработки, я обнаруживаю, что metadata.rb
и CHANGELOG.md
имеют конфликты слияния (Y
). Хотя я мог перебазировать до выпуска кулинарной книги 0.2.0, это изменило бы всю мою историю.
_________________
/ \
0.1.1 0.1.2 0.2.0 \
/ \ / / \ \
o-o--------o-o---X---------o--------o-o------Y-- develop
\ \ \
o------------o------------------------o------- master
Как лучше всего развернуть старую кулинарную книгу?
Я знаю, что подобные вопросы о переносе коммитов git задавались на SO, но ни один из них не описывает, как справляться с неизбежными конфликтами слияния. Должен ли я просто смириться с тем, что конфликты будут, и решать их вручную?
Стратегия Git для переноса исправлений ошибок в более старые ветки (выборка или слияние)
http://glicksoftware.com/blog/backporting-a-topic-branch-with-git
Обновить
Чтобы уточнить, у меня уже есть стратегия использования разных кулинарных книг в разных средах с использованием файла environments.json и закрепления версий. а>.