Kiedy powinienem zwiększyć numer wersji?

23

Nie uczyłem się programowania w szkole i nie pracuję jako (profesjonalny) programista, dlatego wiele podstaw nie jest dla mnie całkiem zrozumiałych. To pytanie próbuje wyjaśnić jedno z nich.


Teraz załóżmy, że mam problemy #1, #2a #3w moim Issues Tracker że są ustawione zostać poprawione / wzmocnionej wersji 1.0.0i że ostatni (stabilna) wersja jest 0.9.0.

Kiedy powinienem inkrementować wersję 1.0.0? Kiedy a) tylko jeden z wyżej wymienionych problemów jest zamknięty lub b) kiedy wszystkie problemy związane z wersją 1.0są zamknięte?

Który z nich jest właściwy ? I właściwie to mam na myśli to, co jest obecnie stosowane w branży.

Ahmed
źródło
22
Zobacz semver.org
Martijn Pieters
1
Możesz także uwzględnić wszystkie trzy problemy w następnym wydaniu.
Martijn Pieters
Tak, już używam SemVer i WSZYSTKIE trzy problemy zostaną wydane w następnym wydaniu :)
Ahmed
Zredagowałem pytanie, aby uniknąć zamieszania.
Ahmed

Odpowiedzi:

14

Mogę ci powiedzieć, jak to robię w pracy.

Posiadamy serwer ciągłej integracji, który buduje, testuje, taguje i generuje wersjonowany pakiet. Przejdziemy do następnego etapu tylko wtedy, gdy poprzedni zakończy się powodzeniem w 100%.

Nasza wersja wygląda następująco: <Wersja główna>. <Wersja mniejsza>. <Numer kompilacji>

  • Każda pomyślna kompilacja, która nie ma ukończonej poprawki błędu lub rozszerzenia funkcji, zwiększa Numer kompilacji.
  • Każda udana kompilacja z ukończoną poprawką lub ulepszeniem funkcji zwiększa wersję pomocniczą. Jest to automatycznie wykrywane przez obecność komunikatu zatwierdzenia w określonym formacie. Ten komunikat zatwierdzenia jest również automatycznie pobierany do ChangeLog projektów.
  • Każdy przyrost wersji głównej jest wykonywany ręcznie, gdy mamy zmiany niezgodne z poprzednimi wersjami, przepisujemy od zera lub z innych powodów wprowadzanych indywidualnie dla każdego przypadku.
dietbuddha
źródło
Ale jeśli masz serię ulepszeń do uzupełnienia w <Wersja pomniejsza>, na przykład 1.0.0. Czy musisz wykonać WSZYSTKIE te udoskonalenia, aby móc powiedzieć „OK! Teraz jest to wersja 1.0.0”, czy zwiększasz wersję 1.0.0, gdy tylko pierwsze ulepszenie zostanie wykonane?
Ahmed
@ahmed Widziałem podejście, które 1.4.2brzmi: „ten zestaw poprawek i wszystko inne gotowe w tym czasie” ... Widziałem również 1.4.2jako „To zostanie wydane tego dnia z tym, co jest gotowe”. To zależy od twojego cyklu wydania.
5
@ahmed Jeśli kryterium przejścia z wersji 0.xx na 1.xx było ukończenie zestawu funkcji / poprawek, to zwiększałbym tylko po ich zakończeniu. Uwaga: wcale tak nie działamy. Nie celujemy w wersję i nie decydujemy, jakie poprawki w niej zostaną wprowadzone. Celujemy w poprawki. Wersja, którą otrzymujemy, służy wyłącznie do śledzenia i identyfikacji, a nie celem.
dietbuddha,
Właśnie to chciałem wiedzieć :)
Ahmed
21

Numery wersji dotyczą tylko wydań , ponieważ umożliwiają użytkownikom zewnętrznym zidentyfikowanie konkretnej wersji oprogramowania. Jeśli jesteś zajęty programowaniem i nie wypuszczasz każdej poprawki osobno, nie martw się o zwiększenie numeru wersji dla każdej poprawki. Nie dotyczy użytkowników zewnętrznych i marnuje swój czas dzięki księgowości w dodatkowych wersjach.

Greg Hewgill
źródło
Czy dotyczy to również tworzenia stron internetowych, w których wydanie może być prostą poprawką drobnego błędu?
Ahmed
4
Czy wykonujesz kontrolę jakości przed wydaniem poprawki? To wydanie. Jeśli nie pełny produkt, to poprawka.
Peter K.
@ahmed W takim scenariuszu numery wersji są często niewidoczne dla użytkownika, a zatem nie mają znaczenia (numery wersji istnieją przede wszystkim w celach marketingowych i wsparcia technicznego, które nie dotyczą wielu aplikacji internetowych). Wystarczy użyć identyfikatora zatwierdzenia. Jeśli nalegasz na używanie numerów wersji, tak, prawdopodobnie zwiększyłbym poziom łatki.
amon
Uczę się tutaj wielu rzeczy: p Podsumowując: NIE potrzebuję numerów wersji, ponieważ identyfikatory zatwierdzeń są wystarczające, ponieważ WSZYSCY użytkownicy i tak będą używać ostatniej wersji.
Ahmed
2
Mimo że wszyscy użytkownicy korzystają z tej samej wersji, do czasu zajrzenia do raportu o defektach wersja zostanie przeniesiona. Nadal potrzebujesz sposobu na powiązanie raportu z konkretną wersją oprogramowania (data / godzina może być wystarczająco dobra).
mattnz
2

W przypadku stale wdrażanych aplikacji internetowych zwykle budujemy numery kompilacji przy użyciu programu Symver z przodu i dostosowywania numerów kompilacji, tj .: 2.5.3.4328, gdzie 4328 pochodzi z systemu ciągłej integracji. Ogólne oczekiwanie jest takie, że liczby zmieniają się celowo, ale że numer kompilacji jest prawdziwym unikalnym identyfikatorem.

Wydaje się, że robi to tutaj, rejestrując dzień wdrożenia i związany z nim numer kompilacji svn:

        <div id="svnrev">
            rev 2013.10.21.1078
        </div>

Tyle ile jest warte.

Wyatt Barnett
źródło
0

Inne odpowiedzi są już świetne, więc dodam je tylko na górze. Jeśli twoje oprogramowanie nie zostało wydane i naprawdę nie potrzebujesz wersji publicznej (wersja niepubliczna to Twoja VCS), dodaj słowo kluczowe „ SNAPSHOT ” na końcu swojej wersji. Niektóre systemy, szczególnie w zarządzaniu zależnościami, traktują migawki inaczej niż wydane wersje, porównując datę zmiany migawek zamiast numeru wersji. Więc jeśli miałeś v. 1.0.0-SNAPSHOT od 8 rano w repozytorium pakietów, a lokalny program do pobierania zależności ma tę samą wersję od 7 rano, powinien pobrać zaktualizowaną wersję z repozytorium.

Jak wspomniano powyżej, twoja prywatna wersja jest zapewniana przez system kontroli wersji (git, svn itp.).

Hubert Grzeskowiak
źródło
0

Jest wystarczająco dużo powiedziane na temat teorii wersjonowania tutaj jest inny punkt widzenia.

Kiedy powinienem inkrementować do wersji 1.0.0?

Skoncentruję swoją odpowiedź na zmianie głównego numeru wersji.

Moja odpowiedź brzmi: w zasadzie, kiedy jesteś na to gotowy. Przejście z wersji 0.9 na 1.0 to wielka sprawa, ponieważ opinia publiczna będzie polegać na przejściu z wersji beta na oficjalną wersję.

(Zakładam, że jest to produkt komercyjny firmy).

Kilka pytań przed przejściem od 0,9 do 1,0.

Czy Twoja organizacja ma czas poinformować wszystkich obecnych klientów? Urządzić imprezę. Uzyskaj wiele próśb o wsparcie. Menedżer konta do sprzedaży Twojego produktu? Itd itd.

Tak, widzę wersję jako narzędzie marketingowe, a jeśli się rozejrzysz, zobaczysz, że jest to w zasadzie standard branżowy.

Nasza firma przeszła z wersji 2.x do 3.0 i miała świetną imprezę, stworzyła wiele szumu i dzięki temu zyskała całkiem sporo nowych klientów. Oprócz niektórych aktualizacji interfejsu różnice między wersjami były dość niewielkie.

Pieter B.
źródło