thumb|Przykład historii kontroli wersji projektu System kontroli wersji () – oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu zmian dokonanych w plikach przez wiele osób w różnym czasie.

Podział Systemy kontroli wersji dzielone są według: architektury oprogramowania licencji oprogramowania sposobu oceny zmian

Architektura Systemy kontroli wersji dzielą się na: lokalne, pozwalające na zapisanie danych jedynie na lokalnym komputerze (np. oraz RCS) scentralizowane, oparte na architekturze klient-serwer (np. CVS, Subversion) , oparte na architekturze P2P (np. BitKeeper, , Git, svk).

Pierwsza grupa zapisuje jedynie wersje plików z lokalnego komputera. W rozwiązaniach scentralizowanych istnieje jedno centralne repozytorium, z którym wszyscy użytkownicy systemu synchronizują swoje zmiany. Rozwiązania rozproszone pozwalają na prowadzenie równoprawnych, niezależnych gałęzi, które można dowolnie synchronizować ze sobą nawzajem, np. poprzez e-mail (Code Co-op). Wybór odpowiedniego typu systemu kontroli wersji zależy od potrzeb projektu.

Sposób oceny zmian Niektóre systemy kontroli wersji operują na poziomie zmian zawartości plików, podczas gdy inne na zestawach zmian (ang. ). Użycie mechanizmu zestawu zmian umożliwia śledzenie zmian, nawet gdy pliki w projekcie zmieniają swoje nazwy i położenie w katalogach.

Przykłady Wolnodostępne systemy kontroli wersji: Lokalne: RCS – wolny odpowiednik Scentralizowane: CVS Subversion Rozproszone: Bazaar

Darcs Git GNU Arch Mercurial

svk GNU CSSC, klon SCCS JEDI VCS Zamknięte (własnościowe) systemy kontroli wersji: Lokalne: SCCS Scentralizowane: Rational ClearCase firmy IBM firmy Borland firmy Microsoft Visual Studio Team Foundation Server firmy Microsoft Rozproszone: BitKeeper firmy BitMover Code Co-op firmy Reliable Software Perforce firmy Perforce Software Sablime firmy Lucent Technologies

Jednym z najprostszych systemów kontroli wersji jest RCS (), który operuje na pojedynczych plikach jedynie na lokalnym komputerze. Przykładowo historia zmian pliku o nazwie plik przechowywana jest w pliku plik,v.

Bardziej zaawansowany jest system CVS (), który umożliwia zarządzanie zmianami całego przedsięwzięcia. CVS został zaimplementowany pierwotnie jako nadbudowa nad RCS i wykorzystuje ten sam format plików wersji (pliki z przyrostkiem ,v). CVS umożliwia m.in. współbieżną pracę wielu programistów, tworzenie odgałęzień (ang. ), rozwiązywanie konfliktów wersji. CVS ma też pewne ograniczenia, np. metadane o plikach nie są wersjonowane, zatwierdzanie zmian wielu plików nie jest atomowe (w przypadku np. awarii połączenia może zostać zatwierdzona tylko część zmian) oraz nie jest obsługiwana zmiana nazwy pliku w ramach repozytorium.

Aby wyeliminować wady CVS, powstał system Subversion, zwany również SVN. Subversion jest bardzo podobny w obsłudze do CVS, ale oferuje szereg udogodnień, takich jak atomowe transakcje, wersjonowanie zmian nazwy plików czy efektywne wersjonowanie plików binarnych. Do przechowywania zmian zastosowana została baza danych .

Zobacz też bugtracker ticket tracking

Linki zewnętrzne Artykuł D. Wheelera o systemach kontroli wersji na licencjach FLOSS