Systemy kontroli wersji (VCS) – Git, SVN, CVS, Mercurial, Bazaar – który wybrać ?
Systemy kontroli wersji (ang. VCS – version control system) jest oprogramowaniem użytecznym w czasie realizacji każdego projektu programistycznego. Pozwala na śledzenie zmian w kodzie źródłowym. W związku z tym, możliwe jest przywracanie starszych wersji plików z kodem, które zostały wykonane przez różne osoby w dowolnych momentach. Systemy kontroli wersji dają możliwość odtworzenia całego projektu z wcześniejszych prac, np. kilku tygodni lub miesięcy. W dodatku można porównać wprowadzone zmiany. Dzięki temu w razie ewentualnych błędów bądź utraty danych, można je odtworzyć oraz naprawić.
Funkcje systemu kontroli wersji
- przechowywanie i kontrola dostępu do plików związanych z projektem,
- historia zmian,
- śledzenie modyfikacji zachodzących w poszczególnych plikach,
- pełna dokumentacja wprowadzanych zmian,
- możliwość tworzenia i śledzenia różnorodnych konfiguracji oprogramowania,
- udostępnianie kolejnych wersji poszczególnych plików.
Funkcje związane z organizacją pracy zespołu rozwijającego oprogramowanie:
- kontrola dostępu do plików dla uczestników,
- synchronizacja zmian wprowadzana przez różnych autorów,
- praca w środowisku rozproszonym w sieci komputerowej,
- kontrola etapów rozwijania projektu,
- rozwiązywanie konfliktów pomiędzy zmianami.
Rodzi się pytanie który system kontroli wersji wybrać?
Typy systemów kontroli wersji
Trzy podstawowe rodzaje oprogramowania to :
- lokalne,
- scentralizowane
- rozproszone.
Systemy lokalne powalają na stworzenie repozytoriów danych tylko na lokalnym komputerze, czyli używać ich może tylko jedna osoba. Ze względu na brak możliwości współdzielenia, obecnie jest to narzędzie rzadko wykorzystywane. Częściej używane są systemy kontroli wersji scentralizowane (oparte na architekturze klient – serwer) oraz rozproszone (praca w sieci P2P). W pierwszym przypadku repozytoria danych są przechowywane na jednym serwerze, zaś w drugim na serwerze i komputerach użytkowników.
Lokalne systemy kontroli wersji
Wiele osób decyduje się na kopiowanie plików do innego katalogu oznaczanego odpowiednią datą. Ta metoda jest często wybierana ze względu na łatwość wykonania. Jednakże, trzeba zauważyć, że jest to opcja podatna na błędy. Łatwo pomylić foldery, omyłkowo zmodyfikować pliki albo skopiować złe dane. Rozwiązaniem tego problemu, było stworzenie bazy danych, w której przechowuje się wszystkie zmiany, jakie się dokonywały na śledzonych plikach.
Najpopularniejszym narzędziem lokalnego VCS był system RCS (Revision Control System). Nadal można go znaleźć na wielu komputerach, np. system Mac OS X rcs udostępnia go po zainstalowaniu narzędzi programistycznych. Jego działanie polega na zapisywaniu danych różnicowych, z każdej dokonanej modyfikacji pliku. System automatyzuje proces tworzenia i przechowywania wersji projektu. Kolejne zmiany są rejestrowane i dokumentowanie, dzięki czemu możliwe jest uzyskanie historii zmian. RCS był przygotowywany z myślą o zarządzaniu wersjami kodu źródłowego, jednak pozwala też na pracę z dowolnymi plikami tekstowymi. W efekcie, system jest w stanie zarządzać wersjami kodu programu oraz dokumentacją w różnych formatach.
RCS jest bardzo prosty w użyciu, posiada też dobrą dokumentację. Do każdego z poleceń dołączone są dokumenty oraz artykuł autora systemu. Niewątpliwymi zaletami oprogramowania jest prostota, stabilność, intuicyjna konfiguracja oraz praktyczna bezbłędność. Jest on bardzo przydatny szczególnie dla początkujących użytkowników.
Scentralizowane systemy kontroli wersji
Potrzeba współpracy w trakcie rozwijania projektu z odrębnych systemów wpłynęła na utworzenie scentralizowanych systemów kontroli wersji (np. CVS). Składają się z jednego serwera, gdzie zapisane są wszystkie śledzone pliki. Klienci mogą się z nim połączyć i uzyskać dostęp do najnowszych wersji. Dzięki temu rozwiązaniu, każdy może sprawdzić, co robią inni uczestnicy projektu. Dodatkowo, w porównaniu z lokalnymi bazami danych, system CVS jest dużo łatwiejszy w zarządzaniu.
System CVS (ang. Centralized Version System) jest oparty na RCS. Realizuje wszystkie funkcje RCS, wykorzystuje go też do rejestrowania zmian w śledzonych plikach. Repozytorium CVS przechowuje informacje na temat drzew katalogów, jakie zawierają pliki objęte kontrolą wersji. System składa się z jednego programu cvs, który udostępnia polecenia odpowiedzialne za wywołanie funkcji systemu. Projekty zarządzane przez RCS można przenieść do CVS.
System kontroli wersji CVS umożliwia:
- Zarządzanie dużymi projektami,
- Równoległą pracę wielu autorów,
- Synchronizację zmian,
- Decentralizację i rozproszenie pracy zespołów twórców,
- Synchronizację repozytoriów rozproszonych w sieci komputerowej,
- Złożoną konfigurację i zarządzanie repozytorium.
Zaletami systemu CVS jest możliwość śledzenia zmian wielu autorów oraz łatwiejsze zarządzanie niż w przypadku lokalnych baz każdego uczestnika projektu. Problematyczne może okazać się scentralizowanie danych, które zostaną utracone w przypadku awarii serwera centralnego. Jednak jest to ryzyko, które istnieje zawsze, jeśli cała historia projektu znajduje się w jednym miejscu.
Rozproszone systemy kontroli wersji
W systemach DVCS (ang. Distributed Version Control System) klienci posiadają kopię całego repozytorium. Dzięki temu, nawet jeśli jeden z serwerów ulegnie awarii, odzyskanie danych nie stanowi problemu. Większość z tych systemów umożliwia współpracę różnych grup autorów nad tym samym projektem. Tę architekturę wykorzystują Git, Mercurial i Bazaar.
Rozproszony system kontroli wersji – zalety
- Bezpieczeństwo danych – nawet jeśli centralny serwer ulegnie awarii, kopie repozytoriów znajdują się u wszystkich uczestników projektu.
- Szybkość wprowadzania zmian – można wprowadzać zmiany do repozytorium bez połączenia ze zdalnym serwerem.
- Łatwość dodawania nowych uczestników projektu.
- Intuicyjne tworzenie branchy – autorzy mogą tworzyć prywatne, eksperymentalne gałęzie, dzięki czemu przeprowadzą testy bez wprowadzania zmian na centralnym serwerze.
Jednym z najpopularniejszych rozproszonych systemów kontroli wersji jest Git. Jego twórcą jest Linus Torvalds. Git miał być narzędziem wspomagającym rozwój jądra Linux. Oprogramowanie posiada licencję GNU GPL wersja 2. Git jest dobrym wsparciem dla rozgałęzionego procesu tworzenia oprogramowania. Dodatkowo, pozwala na pracę bez połączenia z serwerem zdalnym. Kolejnym atutem jest możliwość pracy nad dużymi projektami. Dane mogą być wymieniane przez HTTP(S), FTP, rsync, SSH.
Mercurial oraz Bazaar to rozproszone systemy kontroli wersji, stworzone w Pythonie. Pierwszy z nich jest multiplatformowy, jednak nie posiada wielkich różnic w porównaniu z Gitem. Przewagą jest dobre funkcjonowanie na win32 oraz integracja z edytorem Netbeans 6. Pomoc w systemie jest łatwiejsza do odczytania niż w przypadku systemu Git. Ma wbudowany serwer hg serve, który pozwala na wygodny dostęp przez www oraz nie wymaga wpisywania całych komend, system odgaduje je intuicyjnie.
Bazaar może pracować jako centralny, jak i rozproszony system kontroli wersji. Został zaprojektowany przez Martina Poola. Niestety system przestano rozwijać.
Żeby wybrać odpowiedni system kontroli wersji, należy dobrać jego funkcjonalność do typu projektu oraz indywidualnych potrzeb jego autorów. Warto wypróbować różne rozwiązania. Dzięki temu możliwa jest ocena i wybór najlepszego zabezpieczenia danych.
Sprawdź inne artykuły – Niezbędnik biznesmena i jak zamawiać stronę WWW.