Ostrzeżenie: Od tego postu znalazłem Mercurial i uwielbiam go znacznie lepiej niż SVN. Więc ten post jest trochę nieaktualny z komentarzami Pro SVN i ogólną anty-DVCS, ale anty-git jest nadal aktualny
Jestem fanem SVN nad Git.
Dlaczego? Ponieważ SVN był znacznie łatwiejszy dla jednego programisty lub małego zespołu, a git (konkretnie msysgit) pozostawił mi zły smak w ustach.
Kiedy pracowałem w małym sklepie, zapoznałem się z Git na Windowsie. Natychmiast zauważyłem, ile pracy wymagało, aby pracować z Githubem. Najpierw musiałem wygenerować klucz prywatny ssh, wkleić klucz publiczny w Github, a następnie przywołać pageant i otworzyć mój klucz prywatny za każdym razem, gdy chciałem pchać, co było bardzo denerwujące.
I tak naprawdę nigdy nie podobało mi się, że niszczę całe repozytorium. Przyznam, że nigdy nie pracowałem z niczym wielkim, ale bałbym się pobrać repozytorium KDE w Git, jeśli całe repozytorium i jego wersje są na moim HD.
Potem był mylący proces zatwierdzenia. TMK, musiałem najpierw „wyrównać” wszystkie pliki, które chciałem zatwierdzić (co było do bani, gdy masz wiele plików, zajęło mi trochę czasu, aby znaleźć polecenie ręczne, aby wszystko wyrównać), a następnie wykonać zatwierdzenie, a następnie przesunąć do głównego repo (dlaczego to osobna operacja ?!).
Miałeś także niezbyt (!) Bardzo pomocne dane zatwierdzenia. Och, spójrz, to jest 14f74433245ae17aeeaa część drzewa 2167a4934d0a4a7db0de i rodzic d7042abb4821d3faf600. Do diabła, czy to znaczy? Powinienem być w stanie dość szybko rozgryźć sprawę i nie musiałem sprawdzać dziwnej dokumentacji.
Mówiąc o dokumentacji, przynajmniej kiedy jej używałem, wydawało się, że wszystko jest w formacie linux man, IE jest dla mnie mylące i bezużyteczne. Rzadko mogłem znaleźć dużo pomocy w dokumentach i po prostu skorzystałem z google.
A w przypadku zatwierdzeń jedyną rzeczą, która mi się nie podobała, był brak numerów wersji. Teraz wiem, że dzieje się tak z powodu projektu git, ale każde oprogramowanie wymaga numeru wersji. Nadal pamiętam zatwierdzenia znaczników, które pojawiałyby się z komunikatem „Zmieniono wersję na 1.8.6” lub coś podobnego, ale nadal nie można było budować liczb. Dla mnie wersja 1.8.6.5164 (ostatnia część to numer wersji) mówi mi znacznie więcej niż tylko 1.8.6 i notatkę informującą, że coś drobnego się zmieniło, spróbuj
Bazując na oprogramowaniu, podstawowym programem w systemie Windows jest msysgit, co jest okropnym interfejsem. Kilka razy mnie zablokowało, miało okropny interfejs, a integracja CLI-GUI była co najwyżej niepewna. Wokół mnie ćpunowie z linii poleceń jeszcze bardziej nienawidzili gui.
Teraz spójrzmy na SVN. A ponieważ jestem w systemie Windows i mam konto Google, w szczególności TortoiseSVN i Google Code.
Po pierwsze, pełna integracja powłoki, aby zrobić wszystko w repozytorium (a dla ciebie, Linuksa, RabbitVCS robi to samo), nie potrzebujesz głównego GUI. Uzyskanie repozytorium jest łatwe jak pobranie, nie wymaga SSH (nie pamiętam, czy Github wymagał SSH do ściągania) i nie ma całego repo + wszystkie przeszłe zatwierdzenia siedzące na twoim HD.
Zatwierdzanie jest wyjątkowo łatwe, głównie dlatego, że nie jest wymagane SSH ani inscenizacja. Po prostu sprawdzasz wszystkie pliki, które chcesz, korzystając z bardzo pomocnej opcji zaznacz wszystko, która w mojej wersji msysgit nie była dostępna, wpisz komunikat zatwierdzenia i wciśnij zatwierdzenie. Następnie Google Code prosi o podanie danych logowania (które przechowują większość klientów) i dokonanych czynności. Prosty, łatwy i bez SSH
Numery wersji Za pomocą prostego kodu możesz dodać numer wersji i numer zatwierdzenia do wszystkich transakcji, co znacznie ułatwia sprawę. Otrzymasz również przydatne numery wersji, które faktycznie pokazują zmianę, np. 1.8.6.5165 jest nowszy niż 1.8.6.5164.
Dokumentacja? Trudno powiedzieć. Żółw jest udokumentowany, ale tak długo nie odwoływałem się do oficjalnej dokumentacji, że nie mogę ocenić. Wystarczyło mi przeczytanie prostego przewodnika wprowadzającego.
Scalanie jest czymś innym, czego nie mogę porównać. Musiałem to zrobić raz w Git, gdy ktoś inny dokonał zmiany w pliku, nad którym pracowałem, ale nigdy w SVN.
Który poleciłbym? W dużych zespołach git ma swoje zalety, głównie w nieliniowym cyklu rozwojowym. W innym projekcie widziałem, jak 4 programistów zaczynało w oddzielnych gałęziach, a następnie łączyło cały kod w bardzo dziwny sposób, który w jakiś sposób przekształcił się w końcową gałąź główną. Github i msysgit miały naprawdę fajne narzędzie do wizualizacji całego projektu, który naprawdę mi się podobał.
W przypadku projektów dla pojedynczego dewelopera lub małego zespołu SVN byłby najlepszy, ponieważ większość funkcji Gits nie jest używana, a Ty dostajesz tylko jej negatywne części. Prostota to taka miła rzecz