Podjąłem więc pracę, w której firma używa SVN (ale w przyszłości przeprowadzi się do Git). Problem polega na tym, że nie znam SVN. Wypróbowałem wiele zapytań Google i wszystko, co mogę znaleźć, to samouczki SVN-> Git, blogi „Dlaczego Git jest lepszy od SVN” oraz szczególny „ściągawka”, który daje (niektóre) porównywalne polecenia ...
Krótkie czytanie książki O'Reilly na SVN, jakie są krótkie (ale nie zbyt krótki) instrukcje do SVN dla użytkowników Git?
Odpowiedzi:
Odniesieniem kanonicznym jest Subversion RedBook . Niezależnie od swoich wcześniejszych umiejętności, przeczytaj to od nowa, a otrzymasz wszystkie potrzebne informacje na temat użytkowania. Nie jest to trudne ani całkowicie obce, większość ludzi twierdzi, że SVN jest dużo łatwiejszy do zrozumienia niż git, więc powinieneś być w porządku z odrobiną czytania głównych poleceń. Podstawowy rozdział wykorzystanie powinno cię i działa bez problemu.
Istnieją 2 główne różnice:
Rozgałęzianie jest trywialne, łączenie nie jest tak złe, jak chcą apologeci DVCS, zwłaszcza jeśli trzymasz się „standardowego” trio folderów najwyższego poziomu (zwanych pniem, gałęziami i znacznikami).
SVN bije trochę bitów, przychodzą mi na myśl rzadkie katalogi - gdzie kasujesz tylko część swojego repo. Gdy potrzebujesz więcej części, aktualizujesz tylko to, czego potrzebujesz. Jeśli masz ogromne repo (np. Podstawowy produkt i mnóstwo wtyczek), jest to genialne.
Istnieje kilka bitów, które nie są tak dobre jak git, przychodzi mi na myśl przerażający konflikt drzewa - w przypadku konfliktu na poziomie katalogu (tj. Ktoś usunął edytowany plik)
Jeśli korzystasz z systemu Windows, użyj TortoiseSVN. Kołysze głównie.
źródło
git mv
. SVN masvn move
, ale skoro rozgałęzianie i łączenie w SVN jest swego rodzaju hackem, nie sądzę, że może automatycznie rozwiązywać konflikty drzew jak git ...git mv
jest implementowany jako add + remove. git używa heurystyki, aby ustalić, czy podczas zatwierdzenia miało miejsce przeniesienie lub kopia (myślę, że domyślnie „80% + pliku jest takie samo?”)Jeśli to możliwe, użyj git svn. Byłem w twojej sytuacji i po pół roku frustracji przeszedłem na git svn i od tego czasu jestem szczęśliwy.
Git svn pozwala używać repozytorium lokalnie, a zatwierdzanie do serwera SVN jest następnie obsługiwane przez taki,
git svn rebase
który zmienia lokalne zmiany na pniu subversion, a następniegit svn dcommit
zatwierdza ponowne zatwierdzenie.Może nie jest to optymalne dla zaawansowanego użycia Subversion, ale ponieważ używasz git lokalnie wszystko jest w porządku.
Podczas korzystania z git clone nie należy klonować folderu głównego subversion, ale bezpośrednio katalog docelowy (klon
trunk
). Dzięki temu git będzie działał znacznie szybciej, w przeciwnym razie twoja kopia robocza może stać się ogromna.Oświadczenie : Nie wiem, jak wygląda sytuacja, kiedy chcesz utworzyć gałęzie Subversion itp. Zespoły, z którymi pracowałem, nie korzystały z gałęzi (tylko ja, lokalne gałęzie git).
źródło