лучший способ для создания версий различных веток Git

У нас следующий сценарий: у нас есть несколько базовых версий нашей игры OpenLieroX; сейчас 0,57, 0,58 и 0,59. Для каждой базовой версии у нас есть отдельная ветка. Каждая такая базовая версия имеет несколько выпусков (например, 0.57 beta1-beta8 и rc1, 0.58 beta1-beta9).

Когда мы работаем над новым материалом, мы работаем в ветке с самой высокой базовой версией (сейчас это 0.59). Когда мы исправляем некоторые обнаруженные ошибки, мы делаем это в самой ранней версии (в основном 0.58), где это произошло. Время от времени мы всегда объединяем все изменения в 0,58 в 0,59 (до тех пор, пока мы будем сохранять и вносить изменения в старую ветвь).

Все это работает очень хорошо, пока не произойдут некоторые изменения, которые мы хотим иметь только в 0,58, но не в 0,59. Это произошло только для одного случая: номер версии. У нас есть файл Version.cpp (а также некоторые другие файлы), который содержит номер версии. Поэтому, когда мы хотим выпустить новую версию для 0.58, мы меняем там строку версии на "0.58 beta10 " (или что угодно). Теперь, когда мы делаем обычное слияние с 0,58 до 0,59, это изменение также будет применено. Мы исправляем такие случаи в данный момент, просто перезаписывая его с правильным номером версии (или в случаях других плохих фиксаций, возможно, возврата).

Эта деталь о таких нежелательных изменениях кажется мне немного уродливой. Является ли способ, которым мы справляемся с этим, вообще плох / необычен? Как было бы самым простым способом сделать это, чтобы получить тот же результат? Вишневый сбор всех коммитов 0,58 в 0,59 был бы намного большим трудом.

Также есть еще одна деталь, которая, вероятно, усложняет задачу: работая над кодом, я должен уже указать номер будущей версии. Это потому, что у нас есть сетевой движок, и мы могли ввести некоторые новые функции, и в коде есть проверки вроде:если (клиент->версия ()>= Версия (X, Y, Z)) ... ', Теперь, когда мы вводим что-то новое, обычно это означает, что в некоторые моменты также такие проверки. (Но мы пытаемся избежать этих изменений в старых ветках.)

Другая проблема в том, что мы неt просто посчитаем версию (например, 0.58.1, 0.58.2, ...), но мы рассчитываем так: 0.58 beta1, 0.58 beta2, ..., 0.58 betaX, 0.58 rc1, ..., 0.58, 0.58. 1, 0.58.2, ... Это потому, что мы хотим пометить его как экспериментальный для начала (бета-этап), а затем как в основном стабильный или стабильный. В некоторых редких случаях могут быть серьезные изменения (например, сетевой протокол) даже между двумя различными бета-версиями (конечно, мы стараемся их избегать, но иногда это так и бывает)без этого невозможно).

Ответы на вопрос(4)

Ваш ответ на вопрос