Git nie jest lepszy niż Subversion. Ale też nie jest gorzej. To jest inne.
Najważniejsza różnica polega na tym, że jest ona zdecentralizowana. Wyobraź sobie, że jesteś programistą w drodze, rozwijasz się na swoim laptopie i chcesz mieć kontrolę nad źródłem, aby móc cofnąć się o 3 godziny.
Z Subversion masz problem: repozytorium SVN może znajdować się w miejscu, do którego nie możesz dotrzeć (w twojej firmie i nie masz w tej chwili internetu), nie możesz zatwierdzić. Jeśli chcesz zrobić kopię swojego kodu, musisz go dosłownie skopiować / wkleić.
Z Git nie masz tego problemu. Twoja lokalna kopia jest repozytorium i możesz się do niej zobowiązać i uzyskać wszystkie korzyści kontroli źródła. Gdy odzyskasz łączność z głównym repozytorium, możesz dokonać na nim zgody.
Na początku wygląda to dobrze, ale należy pamiętać o dodatkowej złożoności tego podejścia.
Git wydaje się być „nową, błyszczącą, fajną” rzeczą. Nie jest to wcale złe (istnieje powód, dla którego Linus napisał to dla rozwoju jądra Linuksa), ale czuję, że wiele osób wskakuje na pociąg "Distributed Source Control" tylko dlatego, że jest nowy i jest napisany przez Linusa Torvaldsa, w rzeczywistości wiedząc dlaczego / jeśli jest lepiej.
Subversion ma problemy, ale także Git, Mercurial, CVS, TFS lub cokolwiek innego.
Edycja: Więc ta odpowiedź ma już rok i wciąż generuje wiele pozytywnych opinii, więc pomyślałem, że dodam więcej wyjaśnień. W ciągu ostatniego roku od napisania tego tekstu Git zyskał duży rozpęd i wsparcie, zwłaszcza że strony takie jak GitHub naprawdę się rozkręciły. Obecnie używam Git i Subversion i chciałbym podzielić się osobistymi spostrzeżeniami.
Po pierwsze, Git może być na początku bardzo mylący, gdy pracuje zdecentralizowany. Co to jest pilot? i jak poprawnie skonfigurować początkowe repozytorium? są dwa pytania, które pojawiają się na początku, szczególnie w porównaniu do prostego „SVNADMIN” SVN, „Git init” Gita może przyjmować parametry - gołe i - udostępnione, co wydaje się być „właściwym” sposobem na skonfigurowanie scentralizowanego magazyn. Są ku temu powody, ale dodaje to złożoności. Dokumentacja polecenia „checkout” jest bardzo myląca dla osób, które się zmieniają - „właściwym” sposobem wydaje się być „git clone”, podczas gdy „git checkout” wydaje się zmieniać gałęzie.
Git NAPRAWDĘ świeci, gdy jesteś zdecentralizowany. Mam w domu serwer i laptopa w podróży, a SVN po prostu nie działa tutaj dobrze. W przypadku SVN nie mogę mieć lokalnej kontroli źródła, jeśli nie jestem podłączony do repozytorium (Tak, wiem o SVK lub o sposobach kopiowania repozytorium). W przypadku Git jest to i tak tryb domyślny. Jest to jednak dodatkowe polecenie (git commit zatwierdza lokalnie, podczas gdy git push master master wypycha gałąź master do zdalnego o nazwie „origin”).
Jak powiedziano powyżej: Git dodaje złożoności. Dwa tryby tworzenia repozytoriów: pobieranie kontra klonowanie, zatwierdzanie kontra wypychanie ... Musisz wiedzieć, które polecenia działają lokalnie, a które z „serwerem” (zakładam, że większość ludzi nadal lubi centralne „repozytorium główne” ).
Oprzyrządowanie jest nadal niewystarczające, przynajmniej w systemie Windows. Tak, istnieje dodatek Visual Studio AddIn, ale nadal używam git bash z msysgit.
Zaletą SVN jest to, że jest DUŻO łatwiejszy do nauczenia: istnieje Twoje repozytorium, wszystkie zmiany w stosunku do niego, jeśli wiesz, jak tworzyć, zatwierdzać i kasować, i jesteś gotowy do pracy i możesz odbierać takie rzeczy, jak rozgałęzienie, aktualizacja itp. Później na.
Git ma tę zaletę, że jest DUŻO bardziej odpowiedni, jeśli niektórzy programiści nie zawsze są podłączeni do głównego repozytorium. Ponadto jest znacznie szybszy niż SVN. Z tego, co słyszę, obsługa gałęzi i łączenie jest znacznie lepsza (czego należy się spodziewać, ponieważ są to główne powody, dla których została napisana).
Wyjaśnia to również, dlaczego zyskuje tak dużo szumu w Internecie, ponieważ Git doskonale nadaje się do projektów Open Source: po prostu rozwidlaj go, zatwierdzaj zmiany we własnym Fork, a następnie poproś oryginalnego opiekuna projektu o wycofanie zmian. W przypadku Git to po prostu działa. Naprawdę, wypróbuj to na Githubie, to magia.
Widzę także mosty Git-SVN: Centralne repozytorium jest repozytorium Subversion, ale programiści lokalnie współpracują z Git, a następnie most przesyła swoje zmiany do SVN.
Ale nawet z tym długim dodatkiem wciąż podtrzymuję moje podstawowe przesłanie: Git nie jest ani lepszy ani gorszy, jest po prostu inny. Jeśli potrzebujesz „Kontroli źródła offline” i chęci poświęcenia dodatkowego czasu na jej naukę, to fantastyczne. Ale jeśli masz ściśle scentralizowaną kontrolę źródła i / lub starasz się wprowadzić kontrolę źródła w pierwszej kolejności, ponieważ twoi współpracownicy nie są zainteresowani, to prostota i doskonałe oprzyrządowanie (przynajmniej w systemie Windows) SVN świeci.
Dzięki Git możesz robić praktycznie wszystko offline, ponieważ każdy ma swoje własne repozytorium.
Tworzenie oddziałów i łączenie między oddziałami jest naprawdę łatwe.
Nawet jeśli nie masz uprawnień do zatwierdzania projektu, możesz nadal mieć własne repozytorium online i publikować „żądania wypychania” swoich poprawek. Każdy, kto lubi twoje łatki, może wciągnąć je do swojego projektu, w tym oficjalni opiekunowie.
Rozwidlenie projektu, zmodyfikowanie go i wciąż scalanie poprawek z gałęzi HEAD jest banalne.
Git działa dla programistów jądra Linux. Oznacza to, że jest naprawdę szybki (musi być) i skaluje się do tysięcy współpracowników. Git zużywa również mniej miejsca (do 30 razy mniej miejsca dla repozytorium Mozilla).
Git jest bardzo elastyczny, bardzo TIMTOWTDI (jest na to więcej niż jeden sposób). Możesz użyć dowolnego przepływu pracy, a Git będzie go obsługiwał.
Wreszcie jest GitHub , świetna strona do przechowywania repozytoriów Git.
Wady Git:
źródło
Inne odpowiedzi wykonały dobrą robotę, wyjaśniając podstawowe cechy Git (które są świetne). Ale jest też tak wiele małych sposobów, że Git zachowuje się lepiej i pomaga utrzymać moje życie bardziej rozsądne. Oto kilka małych rzeczy:
źródło
git mv
igit rm
.„ Dlaczego Git jest lepszy niż X ” przedstawia różne zalety i wady Git w porównaniu do innych SCM.
Krótko:
Istnieją pewne wady:
Częściowe pobranie / klonowanie repozytoriów nie jest obecnie możliwe (czytam, że jest w fazie rozwoju). Istnieje jednak obsługa submodułów.Git 1.7+ obsługuje rzadkie płatności .W najbardziej uproszczonym użyciu Subversion i Git są prawie takie same. Nie ma dużej różnicy między:
i
Git naprawdę świeci, rozgałęzia się i współpracuje z innymi ludźmi.
źródło
Google Tech Talk: Linus Torvalds na git
http://www.youtube.com/watch?v=4XpnKHJAok8
Strona porównawcza Git Wiki
http://git.or.cz/gitwiki/GitSvnComparsion
źródło
Cóż, jest rozpowszechniany. Benchmarki wskazują, że jest znacznie szybszy (biorąc pod uwagę jego rozproszony charakter, operacje takie jak diffs i logi są wszystkie lokalne, więc oczywiście jest niesamowicie szybszy w tym przypadku), a foldery robocze są mniejsze (co wciąż zdumiewa mnie).
Kiedy pracujesz nad wersją subversion lub jakimkolwiek innym systemem kontroli wersji klient / serwer, zasadniczo tworzysz kopie robocze na swoim komputerze, sprawdzając wersje. Jest to migawka w czasie, jak wygląda repozytorium. Aktualizujesz kopię roboczą za pomocą aktualizacji i aktualizujesz repozytorium za pomocą zatwierdzeń.
Dzięki rozproszonej kontroli wersji nie masz migawki, ale cała baza kodu. Chcesz zrobić różnicę z 3-miesięczną wersją? Nie ma problemu, 3-miesięczna wersja wciąż jest na twoim komputerze. To nie tylko oznacza, że rzeczy są znacznie szybsze, ale jeśli nie masz połączenia z serwerem centralnym, nadal możesz wykonywać wiele operacji, do których jesteś przyzwyczajony. Innymi słowy, masz nie tylko migawkę danej wersji, ale całą bazę kodu.
Można by pomyśleć, że Git zajmie sporo miejsca na dysku twardym, ale z kilku testów, które widziałem, w rzeczywistości zajmuje mniej. Nie pytaj mnie jak. Mam na myśli, że został zbudowany przez Linusa, on chyba coś wie o systemach plików.
źródło
Główne punkty, które lubię w DVCS, to:
Głównym powodem stosunkowo dużego projektu jest poprawiona komunikacja stworzona przez punkt 3. Inne to miłe bonusy.
źródło
Zabawne jest to, że prowadzę projekty w repozytoriach Subversion, ale uzyskuję do nich dostęp za pomocą polecenia Git Clone.
Proszę przeczytać Develop with Git w Google Code Project
Korzystanie z Git w repozytorium Svn daje mi korzyści:
backup/public
repozytorium SVN do sprawdzenia przez innychźródło
Wszystkie odpowiedzi tutaj są zgodne z oczekiwaniami, zorientowane na programistę, ale co się stanie, jeśli Twoja firma używa kontroli wersji poza kodem źródłowym? Istnieje wiele dokumentów, które nie są kodem źródłowym, które korzystają z kontroli wersji i powinny znajdować się blisko kodu, a nie w innym CMS. Większość programistów nie pracuje w izolacji - pracujemy dla firm w ramach zespołu.
Mając to na uwadze, porównaj łatwość użycia, zarówno w narzędziach klienta, jak i szkoleniu, między Subversion a git. Nie widzę scenariusz, w którym każdy rozproszony system kontroli wersji będzie łatwiejszy w użyciu lub wyjaśnienie nieprogramiście. Chciałbym, aby udowodniono, że się mylę, ponieważ wtedy byłbym w stanie ocenić git i mieć nadzieję, że zostanie zaakceptowany przez ludzi, którzy potrzebują kontroli wersji, którzy nie są programistami.
Nawet wtedy, gdy zarząd zapytałby nas, dlaczego powinniśmy przejść ze scentralizowanego na rozproszony system kontroli wersji, ciężko byłoby mi podać szczerą odpowiedź, ponieważ jej nie potrzebujemy.
Oświadczenie: zainteresowałem się Subversion bardzo wcześnie (około v0.29), więc oczywiście jestem stronniczy, ale firmy, dla których pracowałem od tego czasu, czerpią korzyści z mojego entuzjazmu, ponieważ zachęciłem i poparłem jego użycie. Podejrzewam, że tak dzieje się z większością firm produkujących oprogramowanie. Przy tylu programistach, którzy wskakują na modę Git, zastanawiam się, ile firm nie skorzysta z zalet kontroli wersji poza kodem źródłowym? Nawet jeśli masz oddzielne systemy dla różnych zespołów, tracisz niektóre korzyści, takie jak (ujednolicona) integracja śledzenia problemów, jednocześnie zwiększając wymagania dotyczące konserwacji, sprzętu i szkoleń.
źródło
Subversion jest wciąż znacznie częściej stosowanym systemem kontroli wersji, co oznacza, że ma lepszą obsługę narzędzi. Znajdziesz dojrzałe wtyczki SVN dla prawie każdego IDE , a dostępne są dobre rozszerzenia eksploratora (takie jak TurtoiseSVN). Poza tym muszę się zgodzić z Michaelem : Git nie jest lepszy ani gorszy od Subversion, jest inny.
źródło
Jedną z rzeczy, które mnie denerwują w SubVersion, jest to, że umieszcza własny folder w każdym katalogu projektu, podczas gdy git umieszcza tylko jeden w katalogu głównym. To nie jest to nic wielkiego, ale takie małe rzeczy, które sumują się.
Oczywiście SubVersion ma Tortoise, co jest [zwykle] bardzo miłe.
źródło
David Richards Blog WANdisco o Subversion / GIT
źródło
Git sprawia, że rozgałęzianie i scalanie jest naprawdę łatwe. Subversion 1.5 właśnie dodało śledzenie korespondencji seryjnej, ale Git jest jeszcze lepszy. Dzięki Git rozgałęzienie jest bardzo szybkie i tanie. Ułatwia to utworzenie gałęzi dla każdej nowej funkcji. Repozytoria Oh i Git są bardzo wydajne dzięki przestrzeni dyskowej w porównaniu do Subversion.
źródło
Chodzi o łatwość użycia / kroki wymagane do zrobienia czegoś.
Jeśli tworzę pojedynczy projekt na komputerze / laptopie, git jest lepszy, ponieważ jest o wiele łatwiejszy w konfiguracji i użyciu. Nie potrzebujesz serwera i nie musisz ciągle wpisywać adresów URL repozytorium podczas scalania.
Gdyby to były tylko dwie osoby, powiedziałbym, że git jest również łatwiejszy, ponieważ możesz po prostu naciskać i ciągnąć od siebie.
Gdy jednak wyjdziesz poza to, wybrałbym subwersję, ponieważ w tym momencie musisz skonfigurować „dedykowany” serwer lub lokalizację.
Możesz to zrobić równie dobrze z git, jak z SVN, ale korzyści z git przeważają nad koniecznością wykonania dodatkowych kroków w celu synchronizacji z serwerem centralnym. W SVN po prostu zatwierdzasz. W git musisz git commit, a następnie git push. Dodatkowy krok staje się irytujący po prostu dlatego, że tak często to robisz.
SVN ma również zaletę lepszych narzędzi GUI, jednak ekosystem git wydaje się szybko nadrabiać zaległości, więc nie martwię się o to w dłuższej perspektywie.
źródło
Easy Git ma ładną stronę porównującą faktyczne użycie Git i SVN, która daje wyobrażenie o tym, co Git może zrobić (lub zrobić łatwiej) w porównaniu do SVN. (Technicznie jest to oparte na Easy Git, który jest lekkim opakowaniem na Git.)
źródło
Ogólnie, Git i DVCS są świetne dla programistów wykonujących wiele kodowań niezależnie od siebie, ponieważ każdy ma swoją gałąź. Jeśli jednak potrzebujesz zmiany od kogoś innego, musi ona zobowiązać się do lokalnego repozytorium, a następnie musi przekazać ci ten zestaw zmian lub musisz go od siebie wyciągnąć.
Moje własne rozumowanie każe mi również myśleć, że DVCS utrudnia kontrolę jakości i zarządzanie wydaniami, jeśli robisz takie rzeczy, jak scentralizowane wydania. Ktoś musi być odpowiedzialny za wykonanie tego push / pull z repozytorium wszystkich innych, rozwiązywanie wszelkich konfliktów, które byłyby rozwiązane przy początkowym czasie zatwierdzania, następnie wykonanie kompilacji, a następnie umożliwienie wszystkim innym programistom ponownej synchronizacji repozytoriów.
Wszystko to można oczywiście rozwiązać za pomocą ludzkich procesów; DVCS właśnie zepsuł coś, co zostało naprawione przez scentralizowaną kontrolę wersji w celu zapewnienia nowych udogodnień.
źródło
Podoba mi się Git, ponieważ w rzeczywistości pomaga programistom komunikować się z programistami w średnich i dużych zespołach. Jako rozproszony system kontroli wersji, poprzez system push / pull, pomaga programistom w tworzeniu ekosystemu kodu źródłowego, który pomaga zarządzać dużą pulą programistów pracujących nad jednym projektem.
Na przykład powiedz, że ufasz 5 programistom i wyciągasz kody tylko z ich repozytorium. Każdy z tych programistów ma własną sieć zaufania, z której pobierają kody. Zatem rozwój opiera się na strukturze zaufania programistów, w której odpowiedzialność za kod jest dzielona przez społeczność programistów.
Oczywiście istnieją inne korzyści wymienione w innych odpowiedziach tutaj.
źródło
Nawiązało się do nich kilka odpowiedzi, ale chcę wyraźnie podkreślić 2 punkty:
1) Możliwość dokonywania wybiórczych zatwierdzeń (na przykład
git add --patch
). Jeśli twój katalog roboczy zawiera wiele zmian, które nie są częścią tej samej zmiany logicznej, Git bardzo ułatwia dokonanie zatwierdzenia, które zawiera tylko część zmian. Z Subversion jest to trudne.2) Zdolność do dokonywania zmian bez podawania zmiany do wiadomości publicznej. W Subversion każde zatwierdzenie jest natychmiast publiczne, a zatem nieodwołalne. To znacznie ogranicza zdolność programisty do „wczesnego popełnienia, częstego popełnienia”.
Git to coś więcej niż tylko VCS; jest to również narzędzie do tworzenia poprawek. Subversion to tylko VCS.
źródło
Myślę, że Subversion jest w porządku .. dopóki nie zaczniesz scalać .. lub robić cokolwiek skomplikowanego .. lub robić cokolwiek, co Subversion uważa za skomplikowane (jak robienie zapytań, aby dowiedzieć się, które gałęzie pomieszały z danym plikiem, skąd faktycznie pochodzi zmiana , wykrywanie kopii i wklejania itp.) ...
Nie zgadzam się z zwycięską odpowiedzią, mówiąc, że główną korzyścią GIT jest praca offline - z pewnością jest przydatna, ale jest bardziej dodatkowa w moim przypadku użycia. SVK może również pracować offline, wciąż nie mam pytania, w które z nich zainwestować mój czas nauki).
Po prostu jest niesamowicie mocny i szybki, a przyzwyczajony do pojęć - bardzo przydatny (tak, w tym sensie: przyjazny dla użytkownika).
Aby uzyskać więcej informacji na temat łączącej się historii, zobacz: Używanie git-svn (lub podobnego) * tylko *, aby pomóc w scaleniu svn?
źródło
Dzięki temu, że nie musi stale komunikować się z serwerem centralnym, prawie każde polecenie działa w mniej niż sekundę (oczywiście git push / pull / fetch są wolniejsze tylko dlatego, że muszą inicjować połączenia SSH). Rozgałęzianie jest znacznie łatwiejsze (jedno proste polecenie do rozgałęzienia, jedno proste polecenie do scalenia)
źródło
Absolutnie uwielbiam móc zarządzać lokalnymi gałęziami mojego kodu źródłowego w Git bez zamulania wody w centralnym repozytorium. W wielu przypadkach wyewidencjonuję kod z serwera Subversion i uruchomię lokalne repozytorium Git, aby móc to zrobić. Wspaniale jest również, że inicjowanie repozytorium Git nie zanieczyszcza systemu plików wieloma irytującymi folderami .svn wszędzie.
A jeśli chodzi o obsługę narzędzi Windows, TortoiseGit bardzo dobrze radzi sobie z podstawami, ale nadal wolę wiersz poleceń, chyba że chcę wyświetlić dziennik. Naprawdę podoba mi się sposób, w jaki Tortoise {Git | SVN} pomaga podczas czytania dzienników zatwierdzania.
źródło
To niewłaściwe pytanie. Zbyt łatwo jest skupić się na brodawkach gita i sformułować argument, dlaczego subwersja jest rzekomo lepsza, przynajmniej w niektórych przypadkach użycia. Fakt, że git został pierwotnie zaprojektowany jako zestaw konstrukcyjny kontroli wersji niskiego poziomu i ma barokowy interfejs zorientowany na programistę Linux, ułatwia świętym wojnom zdobycie trakcji i postrzeganie zasadności. Zwolennicy Git walą w bęben milionami zalet przepływu pracy, które svn faceci uważają za niepotrzebne. Wkrótce cała debata została sformułowana jako scentralizowana vs rozproszona, co służy interesom społeczności narzędziowej svn dla przedsiębiorstw. Firmy, które zwykle publikują najbardziej przekonujące artykuły o przewadze subwersji w przedsiębiorstwie,
Ale tu jest problem: Subversion to architektoniczny ślepy zaułek .
Podczas gdy możesz wziąć git i zbudować scentralizowaną zamianę subversion dość łatwo, mimo że svn istnieje ponad dwa razy dłużej, nigdy nie był w stanie uzyskać nawet podstawowego śledzenia scalania działającego w pobliżu tak dobrze, jak w git. Jednym z podstawowych powodów jest decyzja projektowa, aby gałęzie były takie same jak katalogi. Nie wiem, dlaczego pierwotnie wybrali się w ten sposób, co z pewnością sprawia, że częściowe kasy są bardzo proste. Niestety uniemożliwia również prawidłowe śledzenie historii. Teraz oczywiście powinieneś stosować konwencje układu repozytorium subversion, aby oddzielić gałęzie od zwykłych katalogów, a svn używa pewnych heurystyk, aby wszystko działało w codziennych przypadkach użycia. Ale wszystko to po prostu pomija bardzo kiepską i ograniczającą decyzję projektową na niskim poziomie. Możliwość różnicowania pod względem repozytorium (zamiast różnic pod względem katalogów) jest podstawową i krytyczną funkcją systemu kontroli wersji i znacznie upraszcza elementy wewnętrzne, umożliwiając tworzenie inteligentniejszych i przydatnych funkcji na nim. Widać, ile wysiłku włożono w rozszerzenie subwersji, a jednak jak daleko jest ona do obecnej uprawy nowoczesnych VCS pod względem podstawowych operacji, takich jak rozwiązywanie scalania.
Oto moja radosna i agnostyczna rada dla każdego, kto wciąż uważa, że Subversion jest wystarczająco dobry na dającą się przewidzieć przyszłość:
Subversion nigdy nie dogoni nowszych ras VCS, które nauczyły się na błędach RCS i CVS; jest to technicznie niemożliwe, chyba że od podstaw zmienią model repozytorium, ale wtedy tak naprawdę nie byłoby svn, prawda? Niezależnie od tego, jak bardzo uważasz, że nie posiadasz możliwości współczesnego VCS, twoja ignorancja nie ochroni cię przed pułapkami Subversion, z których wiele to sytuacje niemożliwe lub łatwe do rozwiązania w innych systemach.
Niezwykle rzadko zdarza się, że techniczna niższość rozwiązania jest tak wyraźna, jak w przypadku svn, na pewno nigdy nie wypowiedziałbym takiej opinii na temat wygranej z linuksem lub emacsa przeciwko vs, ale w tym przypadku jest tak clearcut i kontrola źródła są tak podstawowym narzędziem w arsenale programisty, że uważam, że należy to jednoznacznie stwierdzić. Niezależnie od wymogu używania svn z powodów organizacyjnych, błagam wszystkich użytkowników svn, aby ich logiczny umysł nie skonstruował fałszywego przekonania, że bardziej nowoczesne VCS są użyteczne tylko w przypadku dużych projektów typu open source. Bez względu na charakter pracy programistycznej, jeśli jesteś programistą, będziesz bardziej skutecznym programistą, jeśli nauczysz się korzystać z lepiej zaprojektowanych VCSes, czy to Git, Mercurial, Darcs, czy wielu innych.
źródło
Subversion jest bardzo łatwe w użyciu. W ciągu ostatnich lat nigdy nie znalazłem problemu lub że coś nie działa zgodnie z oczekiwaniami. Istnieje również wiele doskonałych narzędzi GUI, a obsługa integracji SVN jest duża.
Z Git otrzymujesz bardziej elastyczny VCS. Możesz używać go w taki sam sposób jak SVN ze zdalnym repozytorium, w którym zatwierdzasz wszystkie zmiany. Możesz jednak używać go głównie w trybie offline i od czasu do czasu przesuwać zmiany do zdalnego repozytorium. Ale Git jest bardziej złożony i ma bardziej stromą krzywą uczenia się. Po raz pierwszy znalazłem się w niewłaściwych gałęziach, tworząc gałęzie pośrednio lub otrzymując komunikaty o błędach z niewielką ilością informacji o pomyłce i gdzie muszę szukać w Google, aby uzyskać lepsze informacje. Niektóre proste rzeczy, takie jak podstawianie znaczników ($ Id $) nie działa, ale GIT ma bardzo elastyczny mechanizm filtrowania i przechwytywania do łączenia własnych skryptów, dzięki czemu dostajesz wszystko, czego potrzebujesz i więcej, ale potrzebuje więcej czasu i czytania dokumentacji ;)
Jeśli pracujesz głównie w trybie offline z lokalnym repozytorium, nie masz kopii zapasowej, jeśli coś zostanie utracone na komputerze lokalnym. W SVN pracujesz głównie ze zdalnym repozytorium, które jest jednocześnie tym samym, co tworzenie kopii zapasowych na innym serwerze ... Git może działać w ten sam sposób, ale nie było to głównym celem Linusa, aby mieć coś takiego jak SVN2. Został zaprojektowany z myślą o programistach jądra Linux i potrzebach rozproszonego systemu kontroli wersji.
Czy Git jest lepszy od SVN? Programiści, którzy potrzebują tylko historii wersji i mechanizmu tworzenia kopii zapasowych, mają dobre i łatwe życie dzięki SVN. Programiści często pracujący z oddziałami, testujący więcej wersji jednocześnie lub pracujący głównie offline mogą korzystać z funkcji Git. Istnieje kilka bardzo przydatnych funkcji, takich jak ukrywanie ukrytych plików SVN, które mogą ułatwić życie. Ale z drugiej strony nie wszyscy ludzie będą potrzebować wszystkich funkcji. Więc nie widzę zmarłych SVN.
Git potrzebuje lepszej dokumentacji, a raportowanie błędów musi być bardziej pomocne. Również istniejące przydatne GUI są rzadko. Tym razem znalazłem tylko 1 GUI dla Linuksa z obsługą większości funkcji Git (git-cola). Integracja z Eclipse działa, ale nie została oficjalnie wydana i nie ma oficjalnej strony aktualizacji (tylko niektóre zewnętrzne witryny aktualizacji z okresowymi kompilacjami z bagażnika http://www.jgit.org/updates ) Tak więc najbardziej preferowany sposób korzystania z Git w tych dniach to linia poleceń.
źródło
Eric Sink z SourceGear napisał serię artykułów na temat różnic między rozproszonymi a niedystrybuowanymi systemami kontroli wersji. Porównuje wady i zalety najpopularniejszych systemów kontroli wersji. Bardzo ciekawa lektura.
Artykuły można znaleźć na jego blogu, www.ericsink.com :
Przeczytaj różnice
Git to C narzędzi kontroli wersji
O braku szacunku Gita dla niezmienności i najlepszych praktykach dotyczących DVCS
DVCS i DAG, część 1
DVCS i DAG, część 2
DVCS i śledzenie błędów
Scal historię, DAG i Darcs
Dlaczego Git jest tak szybki?
Mercurial, Subversion i Wesley Snipes
źródło
Dla osób szukających dobrego Git GUI, Syntevo SmartGit może być dobrym rozwiązaniem. Jego zastrzeżony, ale darmowy do użytku niekomercyjnego, działa na Windows / Mac / Linux, a nawet obsługuje SVN przy użyciu pewnego rodzaju mostka git-svn, tak myślę.
źródło
http://subversion.wandisco.com/component/content/article/1/40.html
Myślę, że dość bezpiecznie jest powiedzieć, że wśród programistów SVN vs. Od pewnego czasu szaleje argument Git, a każdy ma własne zdanie na temat tego, co jest lepsze. Zostało to nawet poruszone w pytaniach podczas naszego seminarium internetowego na temat Subversion w 2010 roku i później.
Hyrum Wright, nasz dyrektor Open Source i prezes Subversion Corporation, mówi o różnicach między Subversion a Git, a także innymi rozproszonymi systemami kontroli wersji (DVCS).
Mówi także o nadchodzących zmianach w Subversion, takich jak Working Copy Next Generation (WC-NG), które jego zdaniem spowodują powrót wielu użytkowników Gita do Subversion.
Obejrzyj jego film i daj nam znać, co myślisz, komentując ten blog lub publikując posty na naszych forach. Rejestracja jest prosta i zajmie tylko chwilę!
źródło
Git w Windows jest teraz dość dobrze obsługiwany.
Sprawdź GitExtensions = http://code.google.com/p/gitextensions/
oraz instrukcja obsługi systemu Windows Git.
źródło
Mieszkam ostatnio na ziemi Git i podoba mi się to w projektach osobistych, ale nie byłbym w stanie zmienić projektów na Subversion z uwagi na zmianę sposobu myślenia pracowników, bez żadnych naglących korzyści. Co więcej, największy projekt, który realizujemy we własnym zakresie, jest niezwykle zależny od svn: zewnętrznych, które z tego, co do tej pory widziałem, nie działają tak dobrze i bezproblemowo w Git.
źródło
Po pierwsze, jednoczesna kontrola wersji wydaje się łatwym problemem do rozwiązania. Wcale nie jest. Tak czy siak...
SVN jest dość nieintuicyjny. Git jest jeszcze gorszy. [sarkastyczna spekulacja] Może to być spowodowane tym, że programiści, którzy lubią trudne problemy, takie jak równoczesna kontrola wersji, nie są zainteresowani tworzeniem dobrego interfejsu użytkownika. [/ sarkastyczne spekulacje]
Zwolennicy SVN uważają, że nie potrzebują rozproszonego systemu kontroli wersji. Też tak myślałem. Ale teraz, kiedy używamy wyłącznie Gita, jestem wierzący. Teraz kontrola wersji działa dla mnie ORAZ zespołu / projektu zamiast po prostu pracować dla projektu. Kiedy potrzebuję oddziału, rozgałęziam się. Czasami jest to gałąź, która ma odpowiednią gałąź na serwerze, a czasami nie. Nie wspominając już o wszystkich innych zaletach, nad którymi będę musiał się uczyć (częściowo dzięki tajemnemu i absurdalnemu brakowi interfejsu użytkownika, który jest nowoczesnym systemem kontroli wersji).
źródło
Dlaczego uważam, że Subversion jest lepszy niż Git (przynajmniej w przypadku projektów, nad którymi pracuję), głównie ze względu na jego użyteczność i prostszy przepływ pracy:
http://www.databasesandlife.com/why-subversion-is-better-than-git/
źródło