W każdym projekcie rozwoju oprogramowania przychodzi taki moment, kiedy komunikacja między uczestnikami staje się wąskim gardłem. Programiści muszą wprowadzać zmiany przez pewien okres czasu, więc konieczne jest, aby wszyscy byli po tej samej stronie, upewniając się, że każdy ma najnowszą wersję jakiegoś istotnego fragmentu informacji.

W miarę jak zakres projektu rośnie, rośnie też liczba osób w niego zaangażowanych. Z czasem staje się on więc nieco bardziej skomplikowany. Jednym z najlepszych sposobów radzenia sobie z tą złożonością jest wykorzystanie systemów kontroli wersji.

Kontrola wersji to centralne repozytorium, które przechowuje zmiany dokonane w pliku lub zestawie plików w czasie, dzięki czemu różni członkowie zespołu zawsze mają łatwy dostęp do najnowszych iteracji plików lub dokumentów związanych z projektem. Przyjrzymy się dwóm popularnym systemom kontroli wersji – SVN i VSS.

Czym jest SVN?





Subversion, powszechnie skracany jako SVN, jest darmowym, otwartym systemem kontroli wersji i rewizji rozpowszechnianym na licencji Apache, wykorzystywanym do utrzymania kodu źródłowego projektów Apache.

SVN jest scentralizowanym systemem kontroli wersji, który utrzymuje centralne repozytorium do przechowywania informacji w typowym hierarchicznym formacie plików i katalogów.

Repozytorium przechowuje pełną historię zmian kodu w centralnym serwerze. Jeśli programista chce połączyć się z repozytorium i uzyskać dostęp do pliku w celu dokonania w nim zmian, musi ściągnąć plik z centralnego repozytorium na własną maszynę, a następnie dodać lub zmodyfikować pliki i wypchnąć zmiany z powrotem do repozytorium.



Automatycznie aktualizuje lokalną kopię roboczą projektu, nad którym pracujesz, aby uwzględnić zmiany wprowadzone przez każdego, kto pracuje nad projektem. Dzięki temu każdy ma dostęp do najnowszych zaktualizowanych plików, które pchnąłeś do centralnego repozytorium.



Co to jest VSS?

Visual SourceSafe (VSS) to rozproszony system kontroli wersji firmy Microsoft, który automatyzuje proces śledzenia plików i kontroli wersji. Zaprojektowany dla małych projektów rozwoju oprogramowania, VSS jest zwykle używany w trybie zintegrowanym z Microsoft Visual Studio. Podobnie jak SVN, utrzymuje centralną bazę danych, w której przechowywane są wszystkie pliki i dokumenty związane z projektem wraz z historią zmian tych plików w czasie.

Zasadniczo identyfikuje, organizuje i kontroluje zmiany w oprogramowaniu podczas jego rozwoju i utrzymania. Utrzymuje wiele wersji pliku, w tym zapis zmian, oraz archiwizuje i śledzi stare wersje plików. VSS był początkowo usługą Software Configuration Management (SCM), ale z czasem przekształcił się w system zarządzania kodem źródłowym. VSS pozwala na przechowywanie wszystkich typów plików, w tym kodu, grafiki, dokumentów, bibliotek DLL, ikon, plików pomocy itd. Pliki te są przechowywane w bazie danych VSS w 'projektach’. Działa on jako wspólne repozytorium, w którym każdy może zapisać swoje pliki związane z projektem, a także uzyskać z niego dostęp do plików.

Różnica między SVN a VSS

Narzędzie SVN i VSS



– Microsoft Visual SourceSafe (VSS) był jednym z najbardziej popularnych narzędzi Microsoftu do kontroli i zarządzania źródłami, które jest zwykle używane zintegrowane z Microsoft Visual Studio. Narzędzie zostało pierwotnie opracowane przez firmę o nazwie One Tree Software, która została później przejęta przez Microsoft. VSS jest obecnie przestarzałą usługą.

SVN, z drugiej strony, jest darmowym, otwartym systemem kontroli wersji i rewizji rozpowszechnianym na licencji Apache. SVN jest dość łatwy w użyciu, a przepływ pracy jest bardzo podobny do innych systemów kontroli wersji, więc ci, którzy są już zaznajomieni z systemami kontroli wersji, nie będą mieli problemów z przejściem do SVN.

Atomic Commit

– Atomic commit jest prawdopodobnie jedną z najlepszych praktyk w systemach zarządzania kodem źródłowym, która jest niepodzielną zmianą, która popełnia wiele plików jako pojedynczy check-in. Jest to zazwyczaj zawarte jako podstawowa funkcjonalność w implementacjach SCM.

Jednym z powodów, dla których programiści wolą SVN od innych systemów SCM, takich jak VSS, jest to, że SVN pozwala na atomowe zobowiązania. Oznacza to, że kiedy popełniasz coś w SVN, albo wszystko, co chcesz popełnić, wchodzi, albo nic. Repozytorium nie przechodzi w niespójny stan, jeśli jakaś operacja zostanie przerwana w połowie drogi. Jednak polecenia VSS nie są atomowe.



Tryb pracy

– Kolejną zasadniczą różnicą pomiędzy tymi dwoma systemami kontroli wersji jest to, że tryb pracy SVN jest nieblokujący. Oznacza to, że wielu użytkowników może uzyskać dostęp do tego samego pliku i modyfikować go podczas pracy na swoich kopiach roboczych, nie powodując żadnych konfliktów.

SVN zapobiega wszelkim konfliktom między wieloma użytkownikami pracującymi na tej samej kopii roboczej. W SVN nic nie jest naprawdę zablokowane i każdy członek zespołu, który ma dostęp do commitów, może w dowolnym momencie dokonać zmian w dowolnym pliku. Z drugiej strony w VSS nie ma gwarancji, że zmiany w tym samym pliku nie są ze sobą sprzeczne. Użytkownicy mogą zostać zablokowani podczas próby commitowania zmian do wspólnego pliku w tym samym czasie.

Podsumowanie SVN i VSS

Jedną z głównych różnic między SVN a VSS jest to, że tryb pracy SVN jest nieblokujący, co oznacza, że wielu użytkowników może popełnić zmiany w pliku w tym samym czasie, bez wywoływania jakiegokolwiek konfliktu.

SVN jest scentralizowanym systemem kontroli wersji, który utrzymuje centralne repozytorium pełnej historii zmian kodu w czasie, ułatwiając każdemu dodanie, modyfikację lub usunięcie dowolnego pliku w dowolnym momencie. Z drugiej strony, VSS to wycofana usługa firmy Microsoft, która kiedyś była jednym z szeroko stosowanych narzędzi kontroli źródeł.