System kontroli wersji

System kontroli wersji (ang. version/revision control system) – 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ł
[edytuj | edytuj kod]Systemy kontroli wersji dzielone są według:
- architektury oprogramowania
- licencji oprogramowania
- sposobu oceny zmian
Architektura
[edytuj | edytuj kod]Systemy kontroli wersji dzielą się na:
- lokalne, pozwalające na zapisanie danych jedynie na lokalnym komputerze (np. SCCS oraz RCS)
- scentralizowane, oparte na architekturze klient-serwer (np. CVS, Subversion)
- rozproszone , oparte na architekturze P2P (np. BitKeeper, Code Co-op , 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
[edytuj | edytuj kod]Niektóre systemy kontroli wersji operują na poziomie zmian zawartości plików, podczas gdy inne na zestawach zmian (ang. changeset). 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
[edytuj | edytuj kod]- Wolnodostępne systemy kontroli wersji:
- Zamknięte (własnościowe) systemy kontroli wersji:
- Lokalne:
- SCCS
- Scentralizowane:
- Rational ClearCase firmy IBM
- StarTeam firmy Borland
- Visual SourceSafe 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
- Lokalne:
Jednym z najprostszych systemów kontroli wersji jest RCS (Revision Control System), 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 (Concurrent Versions System), 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. branch), 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 Berkeley DB .