Podsumowanie
Dla mnie jedynym niezawodnym sposobem na wersję oprogramowania jest użycie identyfikatora skrótu lub zestawu zmian z systemu kontroli wersji.
Ogólny numer wersji kompilacji może być przydatny, ale naprawdę jest unikalny tylko wtedy, gdy masz serwer kompilacji i / lub podpisujesz każdą wersję. Jednak dla wielu z nas po prostu nie jest to wykonalne.
Jeśli Twój projekt jest podzielony na wiele repozytoriów kontroli wersji, musisz również zbudować mechanizm, dzięki któremu interfejs użytkownika będzie mógł sprawdzać każde zależne repozytorium i zgłaszać jego skrót do użytkownika.
Przykład z własnego doświadczenia
W projekcie u poprzedniego pracodawcy, w którym mieliśmy problemy z naszym (wewnętrznym) oprogramowaniem modyfikującym klienta i jego ponowną kompilacją, zainicjowałem proces, w którym skróty rtęci zostały skompilowane do każdej aplikacji i biblioteki. Za każdym razem, gdy oprogramowanie było uruchamiane, tworzony był ciąg rewizji poprzez zapytanie wszystkich komponentów oprogramowania.
Ten ciąg rewizji był wyświetlany po przejściu na stronę About i był zapisywany w pliku dziennika przy każdym uruchomieniu aplikacji. Miał formę:
Application name (6a72e7c61f54)
Library1 (b672a13a41e1)
Library2 (9cc35769b23a)
Library2 (9cc35769b23a)
Library3 (4e9f56a0186a+)
Library2 (9cc35769b23a)
Library4 (2e3b08c4ac76)
Library1 (b672a13a41e1)
Library2 (9cc35769b23a)
Z tego łatwo mogłem zobaczyć, że zmodyfikowali Library3 i nie zatwierdzili tych zmian w repozytorium, więc używają kodu, który nie jest kontrolowany. Mogę również porównać skróty z moim bieżącym systemem testowym, więc mogę być w stanie stwierdzić, że przywrócili (powiedzmy) Library1 do starszej wersji.
Oznaczało to, że ilekroć zgłosili błąd, zawsze mogłem odbudować dokładnie kod używany w momencie wystąpienia problemu lub przynajmniej wiedzieć na pewno, że nie mogę odtworzyć konfiguracji.
Aby uzyskać więcej informacji na temat używanego przeze mnie systemu kompilacji, tego, jak to osiągnąłem, jakie miałem problemy i co ludzie sugerowali, aby ich uniknąć, zapoznaj się z moim pytaniem dotyczącym przepełnienia stosu .
Uwaga: Ten system jest naprawdę opłacalny tylko wtedy, gdy używasz systemu kontroli wersji, w którym dany skrót ma zagwarantowany wynik w postaci tego samego zestawu plików w katalogu roboczym (np. Git i mercurial), jeśli dany katalog roboczy może zawierać mieszaninę plików i katalogi z kilku wersji (np. svn), wtedy wszystkie zakłady są wyłączone w odniesieniu do stanu katalogu roboczego i ta metoda w ogóle nie będzie działać.