CVS vs. SVN vs. inne narzędzia VCS


Tabela porównawcza

Cecha CVS SVN – Subversion VSS
Format
repozytorium
Pliki RCS
Prosty backup
Intuicyjna struktura
Możliwość ręcznych poprawek
BerkleyDB lub pliki binarne
Większe bezpieczeństwo
Potencjalne źródło problemów
Pliki o nierozpoznawalnych nazwach, np. abaaaaa.aaa
3-krotnie większe od CVS
Szybkość Mniejsza ilość transmitowanych informacji (tylko delty)
Stabilność Niestabilny przy dużych projektach. „With VSS, it’s not a question of if you’ll lose data – it’s WHEN.”
Skalowalność
Unicode
Tags
& Branches
Szybkie tworzenie gałęzi i znaczników
Proste tworzenie branchy
Atomowe commity Zmiany w kilku plikach lub katalogach odnoszą skutek tylko wtedy, gdy wszystkie modyfikacje zostały zakończone pomyślnie. W CVS możliwa była sytuacja, gdy część plików została zaktualizowana, a część nie, np. w przypadku zerwania połączenia sieciowego, przez co repozytorium pozostawało przez jakiś czas w stanie niespójnym.
Wsparcie
refactoringu
Wersjonowane przeniesienia
Wersjonowane zmiany nazwy
Wersjonowanie właściwości pliku (uprawnienia, atrybuty, executable, itp)
Wersjonowane foldery
Metadane Można dodawać różne atrybuty do każdego pliku
Hooki
(pre, post)
Możliwe Prostsze
Zabezpieczenie przed
przypadkowym commitem
konfliktującego pliku
Pliki binarne Brak diffa
Rollback repozytorium workaround
Wewnętrzna
architektura
i kod
Brak dostępu do źródeł
Darmowe Bundled with Visual Studio, $549 per full version
Możliwość
migracji z CVS
z historią
cvs2svn – migracja przy pomocy 1 komendy
vss2svn
converter to TFS
Możliwość
skopiowania
całego
repozytorium
Kopiowanie całego folderu link link
Dostępność poprzez Web Wymaga dodatkowych narzędzi
Agregacja modułów link VSS share
Dokumentacja,
powszechność
To avoid
Why Not VSS
SVN vs VSS
SVN vs VSS
Nie używane nawet w Microsofcie.
Projekt rozwijany Stabilny, ale nie rozwijany Nie rozwijany od wielu lat
Apache SVN może używać protokołu bazującego na HTTP – WebDAV/DeltaV do komunikacji sieciowej, serwer webowy Apache zapewnia dostęp do sieci po stronie repozytorium. To daje Subversion przewagę nad CVS i wprowadza za darmo ważne funkcje takie, jak: uwierzytelnianie i autoryzację użytkowników, kompresję przesyłanych danych, oraz podstawowy dostęp do repozytorium.
Jest też dostępny serwer standalone.
Kontrola praw dostępu Ograniczona (pre-commit hooks) J.w. (WebDAV per directory)
link
Uprawnienia per-projekt (read, write, delete, destroy) mogą być przydzielane do konkretnych użytkowników
Konta domenowe link link Dopiero w Team Foundation Server
Śledzenie historii linii kodu Cvs annotate Svn blame
Blokowanie pliku Możliwe dla konkretnych plików
Kopiowanie plików i folderów Niemożliwe Szybkie
Łatwość instalacji ——————————-
——————————-
Integracja z Eclipse Dostępne razem z Eclipse Bardzo podobne do CVS
pluginy: subclipse subversive
Visual Studio ankhsvn
PowerBuilder link PBSCC Pushok link
Merge tracking
Opisy commitów Przy każdej zmianie Przy całym commicie Przy każdym pliku
Zbiór komend
Fisheye
Bamboo
Hudson
CruiseControl
Windows
Linux
VNC / VPN
SCC pushok pushok Nie dot.
Administrowanie Konsola + cvsgui Konsola + web-based TFSAdmin
Powiadomienia e-mail link link sourcevizor

Ź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

Wskazówki i wrażenia użytkownika SVN

Svn działa bezproblemowo – zero zarzutów. Warto na starcie ustalić jednolity standard lokalizowania projektów w katalogach. Jeśli chodzi o porównanie cvs-svn, to różnice istotne to:

  • transakcyjność – to działa i jest przydatne. W cvs zmiana nazwy katalogu/pakietu jest operacją powodującą utratę historii.
  • parametry plikow – zmiana np. uprawnień/atrybutów pliku jest osobną operacją w svn, cvs chyba nie rozróżnia takich operacji.
  • plugin SVN do eclipse (subversive) – niestety jeszcze w wersji 0.7 i zdarzają się problemy. Ja osobiście uzywając konfiguracji subversive + eclipse europa nie miałem problemów, poza samą instalacją plugina, która jest trochę skomplikowana. We wcześniejszym eclipse, subversive instaluje się dużo łatwiej. Natomiast należy się spodziewać, że plugin będzie sie szybko poprawiał, bo jest teraz pod skrzydłami eclipse eclipse.org/subversive.
  • Natomiast moja glowna obserwacja jest taka:
    dużo ważniejsze, niż sam svn czy cvs, jest umiejetność korzystania z tego narzedzia.
    Ostatnio pracowałem w projekcie z nowymi osobami, które kiedyś pracowały na CVS. W tym projekcie pracowaliśmy na SVN. Pomimo ich wcześniejszego doświadczenia w CVS sposób korzystania z tego narzędzia był dalece odbiegający od zaleceń. Np. transakcyjność w ogóle nie byla przez nich poczytywana jako wartość, bo mieli zwyczaj np. commitować nie całą zmianę, tylko połowę zmiany w jednym commit polowe w drugim. Przy takim użytkowaniu podejrzewam, że różnice między cvs a svn się zacierają.
  • Tym niemniej ja osobiście bym używał svn jako narzędzia nowszego i bardziej perspektywicznego, które jest stabilne i transakcyjne (osobiście uważam, że jest to mocna przewaga nad cvs).
    A użytkownikow trzeba naprawdę mocno przeszkolić np. w zakresie robienia merge-y, kiedy? jak? po co?
    Jak commitować zmiany oraz jak przygotowywać i aplikować patche.