Wszystkie przykłady wersji semantycznej, które widziałem, pokazują 3 używane komponenty. Nie więcej niż 2 znaki kropki. W $DAYJOB
naszych numerach wersji używamy 4 komponentów:
5.0.1.2
Czy pozwala na to wersja semantyczna?
A czy jako pytanie dodatkowe na wyższym poziomie i bardziej dyskusyjne, czy to w ogóle ma znaczenie? Zacząłem myśleć, że dobrym pomysłem może być wymuszenie wersjonowania semantycznego, ale ostatecznie podmioty takie jak PCI go nadpisują.
Powinienem był wyjaśnić mój komentarz dotyczący PCI. Problem polega na tym, że audyty i ich koszty wpływają na zmianę głównych i mniejszych komponentów, niekoniecznie jest to prawdziwa nowa funkcja. Na przykład, jeśli wprowadzona zostanie funkcja związana z płatnościami, podbijamy mniejszy numer dla PCI. Ale jeśli dodamy zupełnie nową funkcję związaną z czymś w gui, tak się nie stanie. Zmienia się tylko łatka. Więc w tym przypadku tak naprawdę nie mamy nic do powiedzenia w tej sprawie jako deweloperzy, ponieważ ktoś inny podejmuje te decyzje.
źródło
MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD
. Zasadniczo wolno nam zmieniać tylko trzeci i czwarty komponent bez angażowania PCI (a następnie panów PCI w firmie). Wydaje mi się, że jest to nieco wymyślone, nie jestem pewien, czy są uzasadnione w sposobie zarządzania numerem wersji, ale nie wiem wystarczająco dużo o PCI i procesie audytu, aby powiedzieć inaczej.Odpowiedzi:
Wygląda na to, że omijasz normalne konwencje tylko po to, aby uniknąć narzutu procesu / audytów. To ... wydaje mi się niepokojące.
To, co robisz, polega na celowym tworzeniu dodatkowego numeru wersji (twojej mniejszej cyfry PCI), nieco celowo, aby przenieść swoje funkcje / drobne numery wersji z powrotem o miejsce, aby nie uruchamiać kryteriów kontroli wewnętrznej.
W każdym razie, przechodząc do pytania na temat wersji semantycznej, specyfikacja dla wersji semantycznej mówi:
Podkreśl moje.
Pytanie brzmi: czy używasz czwartego znaku do metadanych przedpremierowych / kompilacyjnych? Czy jest to w zasadzie kolejna wersja wskazująca na wydanie?
Jeśli „tak”, specyfikacja wersji semantycznej na to pozwala. Jeśli „nie”, to technicznie nie przestrzegasz wersji semantycznej.
To, czy chcesz ściśle go przestrzegać, czy nie, jest decyzją, którą Ty i Twój zespół musicie podjąć. Wersja semantyczna ma na celu pomóc w kompatybilności API:
Jest to system, który pomaga wyjaśnić, kiedy przechowywanie wersji wpływa na dalszych użytkowników interfejsu API.
Dopóki twój interfejs API jest podobnie jasny, nie jest to wielka sprawa, którą wybierzesz. Wersje semantyczne po prostu okazują się proste, na przykład, jeśli korzystam z wersji 3.4.2 i muszę zaktualizować do wersji 3.4.10, wiem, że mogę to zrobić, nie psując niczego. Jeśli nowa wersja to 3.5.1, wiem, że jest kompatybilna wstecz. I wiem, że wersja 4.0.1 byłaby przełomową zmianą.
To wszystko jest częścią znaczenia numerów wersji.
Okej, w porządku. Masz system, który działa dla Ciebie i spełnia Twoje potrzeby. To jest kwestia wersjonowania.
Jeśli Twój interfejs API jest prywatny (tylko wewnętrznie), tak naprawdę nie ma znaczenia, w jaki sposób korzystasz z wersji, o ile ma to sens dla Ciebie i wszystkich osób korzystających z niego. Wersje w standardowym formacie mają znaczenie, gdy masz wielu innych użytkowników interfejsu API, którzy muszą wiedzieć „co oznacza ta wersja?”
Posiadanie dowolnego systemu wersjonowania wprowadzi w błąd osoby przyzwyczajone do innych systemów, takich jak wersja semantyczna. Ale jeśli nikt tak naprawdę nie używa twojego systemu kontroli wersji, z wyjątkiem osób, które go tworzą - to nie ma znaczenia.
źródło
W obecnej wersji Semantic Versioning, czyli 2.0.0 , nie. Istnieje wymóg, który definiuje wersję jako formę XYZ, gdzie X, Y i Z są liczbami całkowitymi nieujemnymi, które nie zawierają wiodących zer:
Jednak możliwość dodawania metadanych jest dozwolona dla:
Należy jednak zauważyć, że wersja semantyczna jest przeznaczona specjalnie dla oprogramowania, które deklaruje publiczny interfejs API:
Ma to tendencję do wspierania rozwoju bibliotek lub usług, a nie na poziomie aplikacji.
Ważną rzeczą do rozważenia jest to, co oznaczają twoje numery wersji, zarówno do użytku wewnętrznego, jak i zewnętrznego. Wersje to tylko identyfikatory, które pozwalają mówić o różnicach w oprogramowaniu w dwóch różnych momentach. Wersje semantyczne to jedna z metod owijania reguł, więc jeśli wiesz, że aplikacja korzysta z wersji semantycznej, możesz łatwiej określić poziom wysiłku wymaganego do aktualizacji pakietów. Przestrzeganie wspólnego standardu może być dobre, ale jeśli nie możesz z jakiegokolwiek powodu, dokumentowanie reguł dla użytkowników również powinno być wystarczające.
źródło