Podczas gdy repozytoria Subversion (SVN) są podobne do repozytoriów Git, różnica między nimi jest dość subtelna. Oba są dwoma najpopularniejszymi dostępnymi systemami kontroli wersji używanymi do śledzenia zmian w kodzie źródłowym w czasie, ale mają swój sprawiedliwy udział w różnicach w architekturze. Mogą robić podobne rzeczy, takie jak oznaczanie i rozgałęzianie, ale różnią się one znacznie pod względem sposobu przechowywania. Git to darmowy i otwarty system kontroli wersji dystrybuowany na licencji GNU, podczas gdy SVN jest scentralizowanym systemem kontroli wersji dystrybuowanym na licencji open source. W tym artykule podkreślono niektóre kluczowe różnice między nimi.
Początkowo stworzony dla rozwoju jądra Linuksa przez Linusa Torvaldsa przy użyciu zastrzeżonego DVCS o nazwie BitKeeper, Git wprowadził nowy poziom wspólnego kodowania wśród społeczności programistów. Git to jedno z najpopularniejszych narzędzi używanych w prawie tysiącach projektów i przyjęte przez miliony programistów na całym świecie. Jest to rozproszony system kontroli wersji zaprojektowany w celu śledzenia zmian w kodzie źródłowym w czasie poprzez utrzymywanie specjalnego rodzaju bazy danych zwanej lokalnym repozytorium, które jest dokładnym klonem centralnego repozytorium, które umożliwia użytkownikom przechowywanie historii bieżących i poprzednich wersji pliki na lokalnych komputerach. Główną zaletą Git jest to, że jego operacje nie zależą od dostępu do sieci, co zapewnia integralność treści.
Subversion (SVN) to darmowy system kontroli wersji typu open source służący do zarządzania plikami i ich przechowywania, a zmiany wprowadzane w nich z czasem na scentralizowanym serwerze. Jest rozpowszechniany na licencji Apache jako open source. Założona przez CollabNet w 2000 roku, SVN istnieje od ponad dekady i nadal cieszy się powszechnym przyjęciem jako skuteczne narzędzie VCS zarówno w społeczności open source, jak i ekosystemie korporacyjnym. W przeciwieństwie do Git, SVN przechowuje historie wersji plików na scentralizowanym serwerze. Tworzy oddziały w centralnym repozytorium w formie katalogów. Gdy użytkownik chce wprowadzić zmiany w kodzie, robi to na własnych komputerach, a kiedy to robi, wypycha kod z powrotem do centralnego repozytorium.
Chociaż oba są dwoma najpopularniejszymi programami do kontroli wersji oprogramowania typu open source używanymi do śledzenia zmian w kodzie źródłowym w czasie, bardzo się od siebie różnią. Git to rozproszony system kontroli wersji, który używa systemu rozproszonego do katalogowania wszystkich wersji pliku projektu. Z drugiej strony Subversion (svn) to scentralizowany system kontroli wersji i kontroli wersji dystrybuowany na licencji open source.
Git to rozproszony system kontroli wersji, który oznacza, że zamiast używać scentralizowanego serwera do przechowywania kodu źródłowego i zarządzania nim, tworzy lokalne repozytorium, które jest niczym innym jak klonem centralnego repozytorium, które pozwala programistom na dokonywanie lokalnych zmian. Lokalne repozytorium składa się ze wszystkiego - od historii wersji, przez gałęzie, aż po metadane, wszystko. Z drugiej strony, gdy programiści zobowiązują się do subwersji, wysyłają wszystkie zmiany z powrotem do centralnego repozytorium.
Gdy użytkownicy sprawdzają repozytorium w Git, otrzymują pełny klon całej rzeczy, która jest przechowywana na ich lokalnych komputerach. Muszą „wypchnąć” zmiany dokonane w kodzie, aby udostępnić go innym użytkownikom lub „pociągnąć”, aby zsynchronizować go ze zdalnym repozytorium. Ułatwia to wielu użytkownikom współpracę bez zakłócania działania centralnego repozytorium. W subversion każdy użytkownik korzysta z tego samego centralnego repozytorium poprzez rozgałęzianie.
Git jest najmniej zależny od dostępu do sieci, ponieważ większość jego operacji jest dostępna offline. Użytkownicy mogą wykonywać scalanie, rebase i rozgałęzianie, nawet nie martwiąc się o dostęp do sieci. Jednak sieć jest wymagana tylko wtedy, gdy użytkownicy muszą zsynchronizować swoje lokalne repozytorium z centralnym repozytorium. Z drugiej strony Subversion wymaga dostępu do sieci przez większość swoich operacji, ponieważ nie ma lokalnego repozytorium do przechowywania zmian lokalnie.
Wszystko w Git jest kryptograficznie sumowane przy użyciu algorytmu skrótu SHA-1, zanim zostanie zapisane, co zapewnia niezawodność zawartości kodu. To praktycznie uniemożliwia zmianę zawartości kodu bez wiedzy Git na ten temat. Przeciwnie, Subversion nie ma zaszyfrowanej zawartości, co oznacza, że nie gwarantuje integralności treści w przypadku awarii sieci lub dysku. Git jest niewątpliwie lepszą alternatywą, jeśli chodzi o integralność treści.
Git jest bez wątpienia jednym z najpopularniejszych i najczęściej używanych systemów kontroli wersji, który został specjalnie zaprojektowany do obsługi wszystkiego - od małych po duże projekty. Jest to rozproszony system kontroli wersji open source służący do przechowywania i utrzymywania zmian w kodzie źródłowym w czasie w lokalnym repozytorium, które jest niczym innym jak klonem centralnego repozytorium. SVN jest także systemem kontroli wersji używanym w zasadzie do tego samego celu, z wyjątkiem sposobu przechowywania rzeczy. W przeciwieństwie do Git, SVN używa scentralizowanego serwera do utrzymywania bieżących i poprzednich wersji plików, takich jak kod źródłowy, dokumentacja, strony internetowe itp. Jedną wielką zaletą Git nad SVN jest to, że użytkownicy Git mogą mieć kontrolę wersji bez martwienia się o sieć dostęp, który jest bardzo mało prawdopodobny w SVN.