najlepszy sposób na wersjonowanie różnych gałęzi git

Mamy następujący scenariusz: Mamy kilka podstawowych wersji naszej gry OpenLieroX; teraz 0,57, 0,58 i 0,59. Dla każdej wersji bazowej mamy oddzielną gałąź. Każda taka wersja podstawowa ma kilka wersji (takich jak 0,57 beta1-beta8 i rc1, 0,58 beta1-beta9).

Kiedy pracujemy nad nowymi materiałami, pracujemy w gałęzi z najwyższą wersją bazową (teraz jest to 0.59). Kiedy naprawiamy niektóre zgłoszone błędy, robimy to w najwcześniejszej wersji (przeważnie 0.58) tam, gdzie to nastąpiło. Od czasu do czasu zawsze łączymy wszystkie zmiany w 0,58 w 0,59 (tak długo, jak długo będziemy utrzymywać i wprowadzać zmiany w starej gałęzi).

To wszystko działa naprawdę dobrze, dopóki nie dojdzie do pewnych zmian, które chcemy mieć tylko w 0.58, ale nie w 0.59. Dotyczy to tylko jednego przypadku do tej pory: Numer wersji. Mamy plik Version.cpp (a także kilka innych plików), który zawiera numer wersji. Tak więc, kiedy chcemy wypchnąć nowe wydanie na 0.58, zmieniamy ciąg wersji na „0.58 beta10” (lub cokolwiek). Teraz, gdy wykonamy zwykłe scalanie z 0,58 na 0,59, ta zmiana zostanie również zastosowana. Naprawiamy takie przypadki w tej chwili, zastępując je ponownie odpowiednim numerem wersji (lub w przypadkach innych złych zatwierdzeń, prawdopodobnie odwróceniem).

Ten szczegół dotyczący takich niechcianych zmian wydaje mi się trochę brzydki. Czy sposób, w jaki radzimy sobie z tym ogólnie, jest zły / rzadki? Jak najłatwiej to zrobić, aby uzyskać ten sam wynik? Wybór wszystkich wiórów na 0,58 na 0,59 byłby znacznie więcej pracy.

Jest jeszcze jeden szczegół, który prawdopodobnie sprawia, że ​​jest bardziej skomplikowany: podczas pracy nad kodem muszę już ustawić nadchodzący numer wersji. Dzieje się tak, ponieważ mamy silnik sieciowy i mogliśmy wprowadzić kilka nowych funkcji, a w kodzie są takie kontrole jak „if (client-> version ()> = Version (X, Y, Z)) ...”. Teraz, kiedy wprowadzamy coś nowego, zazwyczaj oznacza to w niektórych przypadkach również takie kontrole. (Ale staramy się unikać tych zmian w starszych gałęziach).

Innym problemem jest to, że nie liczymy tylko wersji (np. 0.58.1, 0.58.2, ...), ale liczymy tak: 0.58 beta1, 0.58 beta2, ..., 0.58 betaX, 0.58 rc1,. .., 0.58, 0.58.1, 0.58.2, ... To dlatego, że chcemy oznaczyć to jako eksperymentalne na początku (etap beta), a następnie jako najbardziej stabilne lub stabilne. W niektórych rzadkich przypadkach mogą wystąpić poważne zmiany (być może protokół sieciowy) nawet między dwiema różnymi wersjami beta (oczywiście staramy się ich unikać, ale czasami nie jest to możliwe bez).

questionAnswers(4)

yourAnswerToTheQuestion