Subversion (znany również jakoSVN) –system kontroli wersji, który powstał w celu zastąpieniaCVS. Z założenia SVN jest w większości przypadków funkcjonalnie zgodny ze swoim poprzednikiem, z kompatybilności zrezygnowano tam, gdzie było to niezbędne do wprowadzenia nowych rozwiązań. SVN jestwolnym i otwartym oprogramowaniem nalicencji Apache.
Brak historii wprowadzanych zmian nazw katalogów był jedną z najczęściej krytykowanych wad CVS. Subversion zapisuje nie tylko zawartość pliku oraz informacje, czy dany plik istnieje, ale także położenie pliku w katalogach, jego kopie, zmiany nazw. Pozwala również zapamiętywać właściwości danego pliku lub katalogu, np. flagi wykonywalności.
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.
Subversion 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.
Subversion umożliwia dostęp do repozytorium przez dedykowany serwer, niezależny od serwera http. Jest on uruchamiany jako usługainetd lub oddzielnydemon. Oferuje on podstawowe uwierzytelnianie i autoryzację użytkowników. Umożliwia także tworzenie połączeń szyfrowanych.
W odróżnieniu do CVS, gdzie dodawanie gałęzi (branches(inne języki)) i znaczników (ang.tags) z powodu organizacji mogło być czasochłonne, w SVN operacje te bazują na szybkim kopiowaniu – kopie zajmują małą, stałą przestrzeń.
- Własny protokółklient/serwer.
- Protokół umożliwia przesyłanie różnic w plikach od klienta do serwera i odwrotnie.
- Rozmiar przesyłanych danych przy zmianie pliku jest proporcjonalny do rozmiaru zmian, a nie pliku.
- Efektywna obsługaplików binarnych.
- Repozytorium przechowywane w bazie danych lub wsystemie plików.