лучший способ для создания версий различных веток 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 был бы намного большим трудом.

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

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

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

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