To zależy. Myślę, że Git to tylko jeden element układanki.
Jak bardzo wersje się między sobą różnią? Czy jest wydzielony jakiś w miarę stabilny rdzeń i rozwijanie wersji polega po prostu na tworzeniu "dodatków" wokół pewnej wspólnej części? Czy może nie ma nic takiego i projekt jest bardziej monolityczny i rozwijanie kolejnych wersji polega na zmianie całego monolitu, jakim jest projekt?
Myślę, że należałoby zadać pytanie jeszcze "czy obecna struktura kodu pozwala mi łatwo na utrzymywanie i rozwijanie wielu wersji naraz?" (jeśli nie to "w jaki sposób mogę zrefaktoryzować projekt, żeby to umożliwić?"). Albo "czy mogę wydzielić core i rozwijac wspólny core osobno od tego, co specyficzne dla różnych wersji?"
Ja tu więc widzę bardziej pytanie o ogólny stan projektu (architektura itp.).
Ale także o sposób użycia
bo ktoś chciał, żeby była obsługa windows xp a
Czyli pytanie, czy potrzebna jest kompatybilność wsteczna (jeśli tak, to cię może to zwolnić). Co jeśli pewne rzeczy będą musiały być po prostu zamrożone w jakiejś wersji, żeby się nie rozpieprzyło nic u jakiegoś klienta
Czy poszczególne wersje wrzucać sobie w branche a w głównej gałęzi mieć tylko jak najnowszą wersję, czy jakoś inaczej będzie lepiej.
można byłoby zrobić branch master (z rdzeniem apki) i do mastera kłaść tylko rzeczy wspólne, oraz branche poboczne, w których rozwijać osobne gałęzie. Ale te gałęzie codziennie byś integrował (np. git rebase) z masterem, żeby gałęzie były zawsze aktualne.
Tylko nie wszędzie się to sprawdzi.
Poza tym nie trzeba robić gałęzi. Można wydzielić po prostu różne katalogi w repozytorium i mieć jedną główną gałęź, w której zawierałyby się wszystkie wersje.
Można by też jakieś feature flagi umieścić, i przełączać dynamicznie zachowanie projektu
Nie trzeba też wszystkiego trzymać w jednym repo. Można utrzymywać ileś repo (ale niekoniecznie 1 repo = 1 wersja, chodzi mi też, że można wydzielić pewne rzeczy wspólne do innego repo).
Ale generalnie to zależy (w dużej mierze od tego jak bardzo modularny jest projekt. Jak masz monolityczny duży projekt o architekturze kuli błota to będziesz miał ograniczone pole do popisu). No i też co to znaczy "wersja" w tym kontekście?
Generalnie nasuwa mi się więcej pytań niż odpowiedzi.