System kontroli wersji

Przykład historii kontroli wersji projektu

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ł

Systemy kontroli wersji dzielone są według:

Architektura

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

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

  • Wolnodostępne systemy kontroli wersji:
    • Lokalne:
      • RCS
      • GNU Source Code Control System – wolny odpowiednik SCCS
    • Rozproszone:
    • Scentralizowane:
  • 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:

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.

Zobacz też

Linki zewnętrzne

Media użyte na tej stronie

Revision controlled project visualization-2010-24-02.svg
Autor: , Licencja: CC-BY-SA-3.0
Visualization of the "history tree" of a revision controlled project, showing branching, merging, tagging, etc.