Systemy kontroli wersji – które wybrać?

Nie tylko przy tworzeniu stron internetowych niekiedy zachodzi konieczność przywrócenia pliku do wcześniejszej wersji. Można robić to na wiele sposobów, choćby poprzez ciągłe kopiowanie plików do konkretnych katalogów. Jednak takie rozwiązanie, choć może być skuteczne, zwykle obarczone jest dużym ryzykiem. Wystarczy drobna pomyłka, by zaprzepaścić wszystkie poprzednie lub obecne wersje. Z pomocą przychodzą więc systemy kontroli wersji.

Systemy kontroli wersji, czyli co?

Systemy kontroli wersji (VCS) to oprogramowanie, które przydatne jest przy realizacji każdego projektu programistycznego. Przechowuje ono starsze wersje plików z kodem, wykonane przez różne osoby w wielu momentach czasu, pozwalając w każdej chwili je przywrócić.  Systemy kontroli wersji pozwalają na przykład otworzyć stan całego projektu sprzed kilku dni, tygodni czy miesięcy oraz porównać wprowadzone zmiany. Dzięki niemu, nawet w przypadku popełnienia błędu czy utraty części danych, będzie możliwe ich odtworzenie oraz naprawa. Pytaniem więc, które się rodzi jest nie czy z systemu kontroli wersji korzystać, ale jaki wybrać.

Rodzaje systemów kontroli wersji

Zasadniczo wyróżnić możemy trzy podstawowe typy tego oprogramowania. Znajdziemy systemy kontroli wersji:

- lokalne (np. RCS, SCSS, GNU SCSS),

- scentralizowane (m.in. SVN, CVS) ,

- rozproszone (np. Git, Mercurial, svk).

Systemy lokalne pozwalają tworzyć repozytoria danych tylko na jednym, lokalnym komputerze. Mogą być one używane zatem tylko i wyłącznie przez jedną osobę, która pracuje nad daną częścią kodu. Narzędzia tego typu, z uwagi na brak możliwości współdzielenia są dzisiaj wykorzystywane bardzo rzadko. Zdecydowanie częściej korzysta się z systemów scentralizowanych – opartych na architekturze typu klient-serwer oraz rozproszonych: pozwalających na pracę w sieci P2P. Różnią się one między sobą tym, że w pierwszym przypadku repozytoria danych przechowywane są tylko na jednym serwerze, co w przypadku jego awarii grozi utratą informacji, a w drugim – starsze wersje przechowywane są zarówno na serwerze, jak i na komputerach użytkowników, co pozwala zawsze na szybkie odtworzenie danych.

Najpopularniejsze systemy kontroli wersji

Jak pokazują trendy w branży programistycznej, dziś coraz więcej projektów tworzonych jest w systemach rozproszonych, które zapewniają największe bezpieczeństwo przechowywanych danych. Pośród nich zaś największą ilością użytkowników cieszą się freeware’owe narzędzia Git oraz Mercurial. I to im przyjrzymy się nieco bliżej.

Git, choć na początku może sprawiać trudności z uwagi na system pracy, jest bardzo potężnym narzędziem kontroli wersji. Przez programistów ceniony jest za wszechstronność i szerokie możliwości.

Najważniejsze zalety Git to:

- szybkość tworzenia nowych repozytoriów – robi się to za pomocą jednego polecenia, co daje możliwość szybkiego stworzenia kopii zapasowej, by móc bezpiecznie pracować nad jakąś częścią kodu,

- mniejsze rozmiary repozytoriów – szczególnie w porównaniu z rozwiązaniami takimi, jak svn,

- wygodny system pracy na gałęziach – na wszystkich pracować można, korzystając z tego samego kodu roboczego,

- brak konieczności doinstalowywania rozszerzeń.

Mercurial jest równie dobrym co Git narzędziem.

Jego najważniejszymi zaletami są:

- bardziej czytelnia niż w Git pomoc dla użytkownika, po której łatwiej się poruszać,

- wbudowany lokalny serwer hg serve, który daje wygodny dostęp przez www,

- szybsze niż w Git wypisanie całej rewizji z pomocą hg archive,

- brak potrzeby wpisywania całych komend – system intuicyjnie je odgaduje.

Wybór systemu kontroli wersji uzależniony powinien być zarówno od typu projektu, jak i indywidualnych preferencji pracujących nad nim programistów. Warto zatem wypróbować kilka rozwiązań, by móc ocenić i wybrać to, które najlepiej zabezpiecza dane i usprawnia nam pracę.