Wiele firm informatycznych staje przed wyborem systemu kontroli wersji. Przedstawiamy porównanie kilku najpopularniejszych narzędzi w tej dziedzinie: CVS, SVN, VSS, Bazaar, Mercurial i Perforce.
Tabela porównawcza
| Cecha | CVS | SVN – Subversion | VSS |
|---|---|---|---|
| Format repozytorium |
Pliki RCS |
BerkleyDB lub pliki binarne |
|
| Szybkość | |||
| Stabilność | |||
| Skalowalność | |||
| Unicode | |||
| Tags & Branches |
|||
| Atomowe commity | |||
| Wsparcie refactoringu |
|||
| Metadane | |||
| Hooki (pre, post) |
|||
| Zabezpieczenie przed przypadkowym commitem konfliktującego pliku |
|||
| Pliki binarne | |||
| Rollback repozytorium | |||
| Wewnętrzna architektura i kod |
|||
| Darmowe | |||
| Możliwość migracji z CVS z historią |
|||
| Możliwość skopiowania całego repozytorium |
|||
| Dostępność poprzez Web | |||
| Agregacja modułów | |||
| Dokumentacja, powszechność |
Nie używane nawet w Microsofcie. |
||
| Projekt rozwijany | |||
| Apache | |||
| Kontrola praw dostępu | link |
||
| Konta domenowe | |||
| Śledzenie historii linii kodu | |||
| Blokowanie pliku | |||
| Kopiowanie plików i folderów | |||
| Łatwość instalacji | ——————————- |
||
| Integracja z Eclipse | pluginy: subclipse subversive |
||
| Visual Studio | |||
| PowerBuilder | |||
| Merge tracking | |||
| Opisy commitów | |||
| Zbiór komend | |||
| Fisheye | |||
| Bamboo | |||
| Hudson | |||
| CruiseControl | |||
| Windows | |||
| Linux | |||
| VNC / VPN | |||
| SCC | Nie dot. | ||
| Administrowanie | |||
| Powiadomienia e-mail |
Źródła
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software#cite_note-22
CVS vs Subversion — Version control systems comparison
Polarion-SubversionDataSheet.pdf (Obiekt application/pdf)
Inne narzędzia
Bazaar i Mercurial są nowszymi systemami, które reprezentują podejście do kontroli wersji w sposób rozproszony.
Rozproszony SCM oferuje praktyczne korzyści w porównaniu z podejściem scentralizowanym.
![]()
Jest jednak wątpliwe, czy rozproszone narzędzia oferują bardziej zaawansowany zestaw operacji.
Narzędzia rozproszone nie mają takiej bazy użytkowników, jak CVS i Subversion.
Bazaar i Mercurial to innowacyjne, elastyczne i przemyślane narzędzia. Z tej dwójki Bazaar jest prostszy w użyciu. Bazaar może być również używany w połączeniu z centralnym repozytorium, co pozwala na połączenie tych dwóch podejść.
Perforce (p4) oferuje klienta graficznego, p4v, który oferuje bardzo szerokie możliwości. Jest przejrzysty, dobrze zorganizowany i posiada takie funkcje, jak: diff, historia pliku i mere’owanie plików. p4 posiada także plugin do CodeWarrior. Dobrze współpracuje z plikami specyficznymi dla Maca. Praca z p4 składa się z 3 kroków: edycja, zmiana i commit. Znaczy to, że zanim będzie możliwa zmiana pliku, należy przeprowadzić operację „check out”. To jednak powoduje problemy przy pracy w trybie offline.
Why Perforce Is No Good.
Autor: Dominik Kapusta

„Narzędzia rozproszone nie mają takiej bazy użytkowników, jak CVS i Subversion.”
Tutaj małe sprostowanie z mojej strony – rozproszone systemy kontroli wersji w ostatnim czasie zbierają gigantyczną bazę użytkowników i to w ważnych projektach, przykładowo Linux Kernel używa Git’a (najbardziej znanego przedstawiciela DVCS o którym nie wspomniałeś). Podobnie inne duże projekty się przestawiają na rozproszone systemy kontroli.
Dalej: dlaczego w łatwości instalacji Subversion jest /-? Instalowałem ten typ repozytorium kilka razy i zawsze było to bardzo prostą operacją (zaciągnąć binarki, ustawić autostart svnserve, dodać repozytoria poprzez svnadmin). Chyba że chodzi o stronę klienta, ale tutaj też nie ma żadnych problemów (TortoiseSVN dla Windows, AnkhSVN dla Visual Studio, Subclipse dla Eclipse…). Proste.
Od jakiegoś czasu korzystam z rozproszonych systemów SCM (przede wszystkim z pominiętego w artykule Git-a oraz tylko wspomnianego Mercurial-a) i uważam że przede wszystkim one powinny być brane pod uwagę przy wyborze systemu kontroli wersji. Co za tym idzie głównie one powinny być przedmiotem takiego artykułu.
Tabela porównawcza, aby być pomocną przy wyborze systemu SCM, powinna zawierać:
Git, Mercurial, Bazaar, SVN – historycznego CVS-a czy VSS-a pomijając milczeniem.
P.S. Bojącym się systemów rozproszonych polecam chociaż krótką pracę z Git-em i zapoznanie się z http://whygitisbetterthanx.com/