System kontroli wersji – opis oraz definicje

System kontroli wersji służy między innymi do śledzenia informacji o zmianach na plikach. Dostarcza takie możliwości jak przywrócenie zmian, dodanie nowych modyfikacji, czy sprawdzenie jakie zmiany zostały ostatnio wykonane.

VCS – version control system

Systemy kontroli wersji dzielimy na trzy rodzaje:

– lokalne – VCS

– scentralizowane – CVCS – Centralized

– rozproszone – DVCS – Distributed

Lokalne – polegają na przechowywaniu plików na lokalnym komputerze. Dodając nową wersję pliku w jakimś katalogu, doklejamy do nazwy np. datę lub numer wersji. Jednak system ten ma wady: czasem można pomylić katalogi, trzeba na bieżąco kontrolować numery plików, a w przypadku awarii komputera cała nasza lokalna baza danych może ulec zniszczeniu. Aby ułatwić pracę na lokalnym repozytorium powstały proste lokalne bazy danych, które ułatwiają przechowywanie zmian. Najpopularniejszym lokalnym systemem kontroli wersji jest RCS. Największą wadą jest brak możliwości współpracy z innymi deweloperami.

Scentralizowane – systemy, które powstały w celu rozwiązania problemów lokalnych VCS. Opierają się one o architekturę klient – serwer. Na serwerze przechowywane są wszystkie pliki, do których ma dostęp każdy deweloper (centralny serwer – rozwiązanie problemu współpracy z innymi deweloperami). Klient służył do łączenia się z serwerem i wprowadzania zmian. Najpopularniejsze systemy CVCS to Subversion oraz Perforce. Wspólny serwer pozwala śledzić zmiany wprowadzane przez innych użytkowników. System CVCS nie rozwiązał problemu awarii. W przypadku uszkodzenia serwera, wszystkie dane mogą zostać utracone i nie będzie możliwości przywrócenia plików.

Rozproszone – wady scentralizowanego systemu kontroli wersji doprowadziły do powstania nowego podejścia do versoringu. Rozwiązaniem okazał się rozproszony system kontroli wersji zwany DVCS. Każdy użytkownika posiada lokalne repozytorium, ze wszystkimi plikami. W przypadku awarii można w łatwy sposób umieścić pliki z lokalnej bazy na nowy, działający serwer. Rozproszony system oparty jest o architekturę P2P. Oznacza to, że każdy użytkownik może komunikować się z każdym, bez centralnego serwera. Zwiększona jest szybkość pracy, ponieważ każdy pracuje na lokalnym repozytorium. Najpopularniejsze systemy to GIT oraz Mercurial

Pojęcia:

repository – repozytorium, czyli baza danych, w której przechowywane są pliki,

commit – wprowadzenie zmian do repozytorium,

log – informacja testowa do wprowadzonej zmiany,

update – aktualizacja lokalnego repozytorium (pobranie najnowszych plików),

checkout – proces pobierania plików z repozytorium,

branch – gałąź, można przyrównać ją do linii rozwoju. Główną gałęzią jest trunk (pień), w której przechowywana jest główna wersja oprogramowania, natomiast w gałęziach pobocznych (branch) przechowywane są zmiany, modyfikacje lub eksperymentalne wersje.

merge – scalanie, czyli proces, który polega na połączeniu głównej gałęzi (trunk) z gałęzią poboczną (branch).