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ł
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. 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:
- CVS
- Subversion
- GNU CSSC, klon SCCS
- JEDI VCS
- Lokalne:
- Zamknięte (własnościowe) systemy kontroli wersji:
- Lokalne:
- SCCS
- Scentralizowane:
- 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.
Zobacz też
- bugtracker
- ticket tracking
Linki zewnętrzne
Media użyte na tej stronie
Autor:
- Revision_controlled_project_visualization.svg: *Subversion_project_visualization.svg: Traced by User:Stannered, original by en:User:Sami Kerola
- derivative work: Moxfyre (talk)
- derivative work: Echion2 (talk)
Visualization of the "history tree" of a revision controlled project, showing branching, merging, tagging, etc.