Wydaje się to oczywiste, ale: celem numerów wersji jest umożliwienie łatwego określenia, jakiej wersji oprogramowania używa każdy użytkownik.
Jeśli istnieje jakakolwiek szansa, że ktokolwiek będzie miał dostęp do określonej iteracji kodu, a poza tym nie będzie w stanie łatwo ustalić niepowtarzalnego identyfikatora, to ta iteracja powinna mieć unikalny numer wersji. Widzę to jako „pierwszą zasadę”. W związku z tym różne wersje będą wyraźnie chciały mieć różne numery wersji.
W grę wchodzi jednak więcej:
Jednym ze sposobów, aby być tego pewnym, jest wybijanie numerów wersji przy każdym zatwierdzeniu, ale zwykle nie jest to dobry pomysł. Wykonanie stosunkowo niewielkiej zmiany może zająć kilka zatwierdzeń / iteracji, a wprowadzanie w życie świata zewnętrznego mylące jest, gdy zobaczysz wersję 0.0.1 -> 0.0.2 w wyniku dużej liczby skumulowanych zmian, a następnie 0.0.2 -> 0.0 .56, ponieważ ktoś popełnił spację naprawiając jeden plik na raz i nie zmienił niczego funkcjonalnego.
To, jak daleko od „jednej wersji na pełne wydanie” do „jednej wersji dla każdego zatwierdzenia”, zależy naprawdę: od ciebie, od innych użytkowników i od systemów, których chcesz użyć, aby wypełnić luki.
Osobiście jestem przyzwyczajony do pracy nad małymi projektami i cieszę się, że używam haszów git do wersji, z której korzystają inni, i wersji wypukłej dla każdego z nich (bez względu na to, jak niewielu ludzi oczekuję, że to zrobią). Jednak w większych firmach i większych projektach stosuje się coś poza numerami wersji semantycznych, ale niższą wierność niż w każdym zatwierdzeniu, jak na przykład numeracja kandydatów do wydania. Są to zalety, ale zwiększają złożoność.