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:
Biorąc pod uwagę numer wersji MAJOR.MINOR.PATCH, zwiększ:
- Wersja MAJOR, gdy dokonujesz niezgodnych zmian API,
- Wersja MINOR, gdy dodajesz funkcjonalność w sposób kompatybilny wstecz, oraz
- Wersja PATCH po dokonaniu poprawek błędów kompatybilnych wstecz.
- Dodatkowe etykiety metadanych w wersji wstępnej i kompilacji są dostępne jako rozszerzenia formatu MAJOR.MINOR.PATCH .
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.
A czy jako pytanie dodatkowe na wyższym poziomie i bardziej dyskusyjne, czy to w ogóle ma znaczenie?
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:
Poprawki błędów, które nie wpływają na interfejs API, zwiększają wersję poprawki, kompatybilne wstecz dodatki / zmiany API zwiększają wersję mniejszą, a wstecznie niezgodne zmiany API zwiększają wersję główną.
Nazywam ten system „wersją semantyczną”. W ramach tego schematu numery wersji i sposób ich zmiany przekazują znaczenie dotyczące kodu źródłowego i tego, co zostało zmodyfikowane z jednej wersji do następnej.
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.
@enderland Tak w zasadzie. MAJOR (PCI) .MINOR (PCI) .EATURE.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.
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.