Czy różne konwencje nazewnictwa wersji są odpowiednie dla różnych projektów? Czego używasz i dlaczego?
Osobiście wolę numer kompilacji w systemie szesnastkowym (np. 11BCF), należy go bardzo regularnie zwiększać. A następnie dla klientów prosty 3-cyfrowy numer wersji, tj. 1.1.3.
1.2.3 (11BCF) <- Build number, should correspond with a revision in source control
^ ^ ^
| | |
| | +--- Minor bugs, spelling mistakes, etc.
| +----- Minor features, major bug fixes, etc.
+------- Major version, UX changes, file format changes, etc.
project-management
development-process
naming
versioning
rjstelling
źródło
źródło
$version = New-Object System.Version 1, 2, 3, 4; $version.ToString(); $version.Build;
Na uwagę zasługuje tutaj wersja semantyczna ( http://semver.org/ ). Jest to publiczna specyfikacja schematu kontroli wersji w formie
[Major].[Minor].[Patch]
. Motywacją tego schematu jest przekazanie znaczenia za pomocą numeru wersji.źródło
Nie używam go, ale widziałem i jest to ciekawa struktura:
Year.Month.Day.Build
Wyjaśniłem.
źródło
Próbuję użyć zasady RubyGems Rational Versioning, w której:
źródło
Oto bardzo szczegółowe podejście do numeracji wersji:
N.x.K
, gdzieN
iK
są liczbami całkowitymi. Przykłady:1.x.0
,5.x.1
,10.x.33
. Używany do kompilacji pośrednich .N.M.K
, GdzieN
,M
iK
są liczbami całkowitymi. Przykłady:1.0.0
,5.3.1
,10.22.33
. Używany do wydań .N.x.x
, gdzieN
jest liczbą całkowitą. Przykład:1.x.x
. Używany do oddziałów wsparcia .N.M.x
, gdzieN
iM
są liczbami całkowitymi. Przykład:1.0.x
. Używany do gałęzi wydania .Oto zdjęcie przedstawiające proste podejście do numeracji wersji:
PA
oznacza pre-alfaA
oznacza alfaB
oznacza betaAR
oznacza uwalnianie alfaBR
oznacza uwalnianie betaRC
oznacza kandydat do uwolnieniaST
oznacza stabilnyZalety takiego numerowania wersji są następujące:
N.x.K
) i release (N.M.K
). Wydanie oznacza, że oprogramowanie z pełnym numerem wersji (N.M.K
) przeszło jakiś proces zarządzania jakością w firmie / organizacji / zespole dostawcy.Istnieje również bardziej złożony schemat przedstawiający podejście do wersjonowania w szczegółach. Możesz także znaleźć przydatne slajdy prezentacji opisujące przejście do podejścia do kontroli wersji i aplikacji SCMFViz ilustrujące podstawowe zasady podejścia do numeracji wersji. Slajdy prezentacji wyjaśniają również, dlaczego ważne jest stosowanie tego samego podejścia do wersji przez cały czas trwania projektu oprogramowania.
Osobiście moje podejście do używania wersji daty zamiast prawdziwych numerów wersji zakłada, że twórcy oprogramowania z wersjami datowanymi:
N
inN.M.K
) odpowiada zarówno za rozwiązanie architektoniczne, jak i za zasadę aplikacji. Numer wersji głównejN
należy zmienić odpowiednio do zmian w architekturze lub zmian głównych pomysłów i zasad jego działania / funkcjonowania.Takie podejście może wydawać się nieco kontrowersyjne, ale uważam, że jest to najprostszy sposób nadania oprogramowaniu odpowiednich numerów wersji.
źródło
W przypadku każdej ważniejszej wersji, którą wydajesz, nierzadko zdarza się, aby działająca wersja nazywała ją wewnętrznie. Na przykład w mojej ostatniej pracy mówiliśmy o głównej wersji z następującą konwencją nazewnictwa inspirowaną Ubuntu:
[stan chorobowy] [nazwa zwierzęcia aliteracyjnego]
Które dały takie nazwy jak „ Limp Lamprey ”, „ Wounded Wombat ” i „ Asthmatic Anteater ”.
Upewnij się, że jeśli nie jest to naprawdę fajna nazwa, nie wycieknie ona do Twoich klientów.
źródło
Generation.Version.Revision.Build (9.99.999.9999)
Generacja rzadko się zmienia. Tylko duży włącz produkt: DOS -> Windows, kompletne przeprojektowanie.
Wersja jest przeznaczona na duże niekompatybilne zmiany, nową funkcjonalność, zmiany niektórych określonych paradygmatów w oprogramowaniu itp.
Korekta jest często wykonywana (drobne funkcje i naprawa błędów).
Kompilacja to informacje wewnętrzne.
źródło
git describe
stanowi ładne rozszerzenie dowolnej konwencji numeracji, którą wybrałeś. Łatwo jest osadzić to w procesie kompilacji / pakowania / wdrażania.Załóżmy, że nazywasz swoje oznaczone wersje wersje ABC (major.minor.maintenance).
git describe
na danym zatwierdzeniu znajdzie najnowszego otagowanego przodka zatwierdzenia, następnie wskaż liczbę zatwierdzeń od tego czasu i skrót SHA1 zatwierdzenia:Jeśli faktycznie jesteś w jednej z wersji, oczywiście otrzymasz tylko tag (1.2.3).
Ma to tę zaletę, że pozwala dokładnie wiedzieć , z jakiego źródła zbudowałeś, bez konieczności samodzielnego liczenia każdej kompilacji.
źródło
Major.Minor.Public (build) [alfa / beta / trial], taki jak „4.08c (1290)”
źródło
Wolę numery wersji, które przypisują jakieś znaczenie semantyczne. Tak długo, jak można użyć numeru wersji do śledzenia błędów zgłaszanych w konkretnej wersji zmian, które nastąpiły w kodzie źródłowym (i systemie zarządzania aktywnością), prawdopodobnie używasz właściwej metody.
Używam .NET, więc utknąłem z systemem numeracji wersji .NET, ale staram się nadać semantyczne znaczenie liczbom, więc
major.minor.build.revision
Zawsze upewniamy się, że numer wersji jest w jakiś sposób widoczny (w naszych programach opartych na konsoli wsadowej jest drukowany na konsoli i plik dziennika, z aplikacjami internetowymi zwykle na pasku menu u góry)
W ten sposób, jeśli klienci zgłaszają problemy, możemy użyć numeru wersji do śledzenia, czy używają najnowszej wersji i ile problemów mieliśmy z poszczególnymi wersjami.
Chodzi o identyfikowalność!
źródło
Używamy Major.Minor.Build # .YYMMDD [sufiks], ponieważ zwykle wykonujemy tylko jedną wersję produkcyjną w danym dniu (ale używamy sufiksu ab / c / d, jeśli jest więcej niż jeden), a YYMMDD daje użytkownikom / klientom / zarządzanie wskazanie wieku kompilacji, gdzie 6.3.1389 nie.
Znaczne liczby rosną wraz ze znaczącymi funkcjami produktu (odpłatnymi).
Drobne liczby rosną wraz z poprawkami / ulepszeniami (bezpłatna aktualizacja).
Kompilacja zawsze wzrasta; nie wszystkie budują statek, więc nie jest to postęp liniowy.
źródło
Numery wersji powinny zawierać wystarczającą ilość informacji, aby uniknąć konfliktów i usunięcia błędu w niewłaściwym typie wydania, ale nie powinny przekazywać dodatkowych informacji, które nie są istotne.
Na przykład, jeśli użyjesz daty, klienci mogą stwierdzić, że mają starszą wersję, a poprawki do starych wersji mogą mieć mylące wersje.
Osobiście lubię wersję semantyczną :
Major
.Minor
.Patch
Patch
zwiększa się za każdym razem, gdy wypuszczasz wersję.Minor
zwiększa się za każdym razem, gdy dodawane są funkcje kompatybilne wstecz.Major
zwiększa, gdy nowa funkcja nie jest kompatybilna wstecz.Major
== 0 jesteś w fazie alfa / przedpremierowej.Major
> = 1 to twoje publiczne wydania.1.5.3
którą mógłby na pierwszy rzut oka powiedzieć, że może dokonać aktualizacji, aby1.5.4
uzyskać łatki,1.6.0
to dodałoby funkcjonalność i do której nie powinien się aktualizować2.0.0
(przynajmniej bez obsługi zmiany).źródło
X.Y.Z
to nasz wewnętrzny numer wersji.X.Y
to publiczny numer wersji, który ma znaczenie dla naszych klientów. GdyX.Y.Z
wersja stanie się publiczna, nigdy nie będzieX.Y.(Z+1)
wersji: wersja publiczna jest zawsze ostatnią serią.X
jest zwiększany, gdy zostaje wydana główna wersja.Y
jest używany do gałęzi serwisowych tych głównych wydań, tylko do naprawiania błędów.Z
jest używany wewnętrznie i nie ma stałego znaczenia. Do tej pory tworzę nowąZ
wersję, gdy myślę, że aplikacja ma zestaw funkcji, które są interesujące do pokazania dla programistów i jest stosunkowo stabilna. W ten sposób mogę pokazać demo „ostatniej znanej dobrej wersji” aplikacji, gdy ktoś o to poprosi. W niedalekiej przyszłości planuję użyćZ
wersji numerycznych do nazwania „celu” funkcji w naszym narzędziu do wykrywania błędów.Na marginesie, używamy maven (z
release
poleceniem), aby zwiększyć numer wersji. Istnieją więc równieżX.Y.Z-SNAPSHOT
wersje (co oznacza dowolną wersję międzyX.Y.(Z-1)
iX.Y.Z
).źródło