Gdzie mogę znaleźć zasoby „SVN dla użytkowników Git”? [Zamknięte]

18

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?

agent154
źródło
3
W skrócie: a) nie ma indeksu, b) svn up = git pull, c) svn commit = git commit && git push d) gałęzie są emulowane przez katalogi ... ;-)
johannes
1
Nie jestem pewien, jak mogę to zrobić bardziej na ten temat ...
agent154
5
Nie ma mowy. Obok wszystkiego jest offtopic na P.SE.
JensG
@ agent154 nie proś nas o to, abyśmy byli wyszukiwarką użytkowników. Zidentyfikuj problem, który masz - problemem nie jest „gdzie mogę znaleźć rzeczy na svn”. „Próbuję coś zrobić i nie potrafię tego zrobić”. Jeśli coś jest specyficzne dla polecenia „svn” i pracujesz nad sposobem, aby to napisać, zapytaj o przepełnienie stosu. Jeśli coś dotyczy przepływu pracy i organizacji svn (kiedy rozgałęzić, kiedy połączyć, jak pracować z innymi programistami) - zapytaj tutaj.
2
Myślę, że zidentyfikowanym problemem jest brak zasobów, nawet nieco zdalnie dostępnych do zrozumienia SVN jako użytkownika Git. Szczerze mówiąc, uważam, że dyskusja na temat tego super przydatnego po przejrzeniu kilku stron wyników wyszukiwania Google / DuckDuckGo nie znalazła niczego innego niż to, o czym wspomniał OP.
Metagrapher

Odpowiedzi:

8

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:

  • commit = push to central repo. Nie ma rebase ani lokalnego zatwierdzenia, ani ściągnięć.
  • rozgałęzianie odbywa się według katalogu. Najlepiej myśleć o całym repozytorium jako strukturze katalogów, rozgałęzianie przypomina tworzenie dowiązania symbolicznego z semantyką kopiowania przy zapisie. Podczas gdy w git rozgałęziasz całe repozytorium i przełączasz się między nimi, aby nowy oddział „nakładał” kopię roboczą, za pomocą SVN możesz wymieniać fragmenty repo. Zasadniczo ludzie rozgałęziają się w folderze najwyższego poziomu (zwykle nazywanym oddziałami), więc przełączanie staje się bardziej podobne do stylu pracy „nakładki” gita.

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.

gbjbaanb
źródło
Zależy. Scalanie z SVN staje się złe, gdy pliki zostały przeniesione (co jest zasadniczo wykształconą formą usuwania + dodawania zarządzaną przez samą SVN) przez kogoś ORAZ zmienioną przez kogoś innego. Poza tym ładna odpowiedź.
JensG
1
Wspomniałem o problemie z konfliktem drzewa ... Taki stan jest problemem dla innych scms, chociaż rozumiem, że git używa heurystyki, aby wykryć, czy przeniesiony plik jest taki sam, nadal może go pomylić, jeśli zmiany są znaczące ( np. plik dzielony na 2).
gbjbaanb
Git nie potrzebuje heurystyki do wykrywania zmian w drzewach - potrzebuje użytkownika do przeniesienia pliku git mv. SVN ma svn 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 ...
Idan Arye
3
@IdanArye git mvjest 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?”)
Izkata
3

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 rebasektóry zmienia lokalne zmiany na pniu subversion, a następnie git svn dcommitzatwierdza 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).

wirrbel
źródło