git vs Subversion - zalety i wady [zamknięte]

11

Jestem użytkownikiem SVN od wielu lat i nie mogę powiedzieć, że jestem z tego całkowicie zadowolony. Kilka dni temu mój partner poprosił mnie, abym rzucił okiem na git, mówiąc, że „ma lepszą wydajność, łatwiejsze łączenie i rozgałęzianie”.

Czytałem kilka artykułów porównujących git vs. SVN i byłbym szczęśliwy, gdyby ludzie mogli podsumować zalety i wady za pomocą obu systemów kontroli wersji.

Teraz patrzę na ludzi, którzy przeszli z jednego systemu do drugiego i słyszę subiektywne opinie.

Wiem dla siebie, że naprawdę podoba mi się sposób działania SVN, mając jedno centralne repozytorium, z którego ludzie mogą pobierać pieniądze, wiedząc, że mogę wdrożyć z niego kopię rozwojową na żywo i kopię produkcyjną na żywo, ale czasami mamy problemy z sortowaniem konfliktów lub innych błędów i za każdym razem, gdy musimy różnicować lub przeglądać historię pliku, mamy do czynienia z opóźnieniem sieciowym.

Z drugiej strony, mając rozproszoną platformę, brzmi to również jak ból głowy, jak możesz kontrolować dostęp? czy masz jedno centralne repozytorium, z którego wypychasz i aktualizujesz?

Dziękujemy za rzucić więcej światła na ten problem.

Adam Benayoun
źródło

Odpowiedzi:

15

Próbujesz porównać dwa narzędzia z punktu widzenia administratora systemu lub jako programista? Jeśli patrzysz na to z perspektywy programistów, być może powinieneś zapytać o to podczas stackoverflow. Lub jeszcze lepiej, być może powinieneś spojrzeć na to, o co już pytano o „ git svn ”.

Rzecz w git i svn polega na tym, że nie jest to ani propozycja. Możesz uruchomić repozytorium SVN, a twoi programiści mogą używać git-svn do interakcji z nim, jeśli uważają, że git jest lepszym narzędziem w konkretnym przypadku.

Zoredache
źródło
2

Naprawdę nie ma żadnych zalet przewrotności nad git. Podczas gdy git jest dystrybuowany, każdy może pracować z centralnego repozytorium za pomocą zdalnych gałęzi śledzenia. git jest szybszy, bardziej elastyczny, a scalanie faktycznie działa. Ponadto możesz realistycznie pracować w trybie offline, podczas gdy przy subversion nie możesz zatwierdzać zmian, jeśli nie masz. Możesz łatwiej pracować z pojedynczymi zatwierdzeniami w git, a pojedynczy identyfikator zatwierdzenia reprezentuje stan repozytorium w svn.

Dostęp jest kontrolowany albo przez konta użytkowników / grup na serwerze git (musisz zainicjować repozytorium pochodzenia za pomocą polecenia „git init --bare --shared”, aby uprawnienia były odpowiednio ustawione) lub za pomocą kluczy ssh. Bardzo szczegółową kontrolę dostępu można skonfigurować za pomocą „gitosis”, który jest dodatkiem zewnętrznym.

Przyzwyczajenie się do pracy z git zajmuje trochę czasu, gdy jesteś przyzwyczajony do svn (właśnie to przeszliśmy w moim biurze), ale git jest znacznie potężniejszy.

Jeśli potrzebujesz świetnego przewodnika, odwiedź http://progit.org - jest to pełna wersja online książki o otwartym kodzie źródłowym.

Aaron Brown
źródło
SVN może obsługiwać większe pliki niż git
Joshua
Nie wiedziałem, że git ma maksymalny rozmiar pliku - jaki jest limit?
Aaron Brown,
2
Chodzi głównie o to, że ponieważ Git przenosi historię z każdą kopią roboczą, duży, mocno edytowany plik zajmie dużo miejsca. Jeśli duży plik jest zasadniczo niezmienny, w porządku
Phil Miller
Powiedziałbym, że komentarz Jozuego wprowadza w błąd. Pliki wyrejestrowane mają ten sam rozmiar dla SVN i git. Stanie się tak dlatego, że ponieważ git przechowuje lokalnie kopię informacji o repozytorium, całkowita ilość miejsca na dysku wymagana dla wszystkich plików plus historia repo będzie rosła podczas edycji plików, ale w przypadku SVN ta przestrzeń jest stała (ponieważ historia repo nie jest przechowywane lokalnie).
Walter
1

W moim zespole jesteśmy w trakcie zmiany systemów kontroli wersji z svn na git. Git ma nieco trudniejszą krzywą uczenia się, więc zacząłem się z nim zapoznawać, a następnie nauczyć programistów, jak go używać. Muszą znać wszystkie zalety systemów rozproszonej wersji sterowania: wiele oddziałów, brak centralnego repozytorium, szybkość itp.

Podobnie jak Ty, mieliśmy system do wdrażania naszych witryn, więc utrzymujemy coś w rodzaju centralnego serwera git, na którym zmiany są pobierane i przekazywane do i na komputery programistów. Nasze strony pobierają zmiany z tego „serwera centralnego”, a reszta procesu wdrażania jest podobna do tej przy użyciu svn.

Próbowaliśmy nie mieszać repozytoriów svn i git, zaczynając migrować nasze mniejsze witryny i tworzyć nowe repozytoria git dla głównych witryn, jakby były nową wersją. Dostępem zarządza się za pomocą kluczy ssh. Używamy również gitweb jako interfejsu sieciowego (nasz system svn jest oparty na http)

Działa, nie zmienia się z dnia na dzień i staramy się, aby programiści nie traktowali tej zmiany jako irytującej, ale nową umiejętność uczenia się narzędzia, które w końcu ulepszy nasz własny system.

hdanniel
źródło