После почти двух недель размышлений, разговоров и обратной связи как со StackOverflow, так и с представителями отрасли, которых я считаю экспертами в области управления изменениями, вчера мы пришли к консенсусному подходу.
На самом деле нет правильного или неправильного ответа - никакой серебряной пули - на правильную обработку разветвления / слияния, поскольку, ИМХО, это варьируется от бизнеса к бизнесу и от продукта к продукту. Вот как мы решили идти вперед:
Независимо от ствола или ответвления, мы продолжим нумерацию на основе формата [Major]. [Minor]. [Build]. [Rebuild], где rebuilt указывает ревизию сборки. Ветви и ствол будут не синхронизированы (разные номера сборки), но это не проблема, так как мы будем определять наши конфигурации сборки и в любом случае явно удалять местоположения. Управление средой будет знать, какая версия развернута на каком сервере.
Вероятно, мы не будем сливать функции в ветку релиза, поскольку у нас обычно больше внимания уделяется ветке релиза, поэтому мы освободим ветку-кандидат и увеличим младшую версию в стволе (и других ветвях, если применимо) перед объединением до ствола после развертывания релиза (если применимо).
Поскольку каждый выпуск требует незначительного приращения версии (кроме исправлений), нумерация сборок никогда не будет изменяться. Патчи, очевидно, будут приходить из ветки prod, поэтому номер сборки будет увеличиваться.
Я хочу оставить этот поток открытым и позволить другим писать о своем предпочтительном методе управления версиями веток.