2013-05-31 27 views
20

Pracuję nad projektem, dla którego wszyscy używają SVN jako scentralizowanego serwera i każdy popycha zmiany, które robią na tym serwerze. Chcę używać lokalnie Git i jestem całkiem nowy dla git svn. Zrobiłem git svn clone repozytorium z git svn clone -r HEAD https://svn.repo/app/branch an Chcę zrobić aktualizację przez git.Git-SVN: Zaktualizuj repozytorium Git ze scentralizowanego serwera SVN

Potrzebuję polecenia "git pull like", ale wyciągnij z konkretnej wersji repo serwera SVN. Istnieje również polecenie "Pobierz jak", aby pobrać z konkretnej wersji repo serwera SVN?

Nie mam żadnych folderów .svn w moim sklonowanym projekcie, a git remote nic mi nie daje. Jednak zrobiłem git config -l i otrzymałem URL serwera SVN, więc w jakiś sposób jestem połączony z serwerem SVN. Nie wiem, jak je pobrać lub pociągnąć.

Dzięki!

Odpowiedz

37

Najlepszy sposób, aby pracować na repozytorium poprzez Git:

  1. git svn init -s https://svn.repo/app/ myrepo zakładając, że pod https://svn.repo/app/ repo zawiera standardowe /trunk, branches i tags podkatalogi
  2. zrobić git svn fetch w myrepo dopóki nie więcej commity są pobrane (może zająć trochę czasu, a czasem przerywa w systemie Windows).
  3. Zamówienie konkretny oddział Subversion lub tułowia poprzez git checkout -b trunk remotes/trunk

Następnie można po prostu przeglądać, siekać i zobowiązać się do swojego Git Repo zawierającej wszystkie Subversion zobowiązuje i gałęzie.

  • Aby wyciągnąć w nowych zatwierdzeń z SVN używać git svn rebase
  • Do pchania lokalne commity język SVN używać git svn dcommit

Aby przejść do określonej wersji Subversion tylko trzeba przeglądać historię poprzez git log i wyszukaj commit odzwierciedlający odpowiednie zatwierdzenie subversion. Możesz łatwo zauważyć wersję Subversion w linii git-svn-id: komunikatu zatwierdzenia. Po prostu użyj git checkout <commithash>, aby wyraźnie sprawdzić tę wersję.

10

Dobry początek:

Aby pobrać nowe svn commit do lokalnego repo: git svn rebase

pchnąć swój lokalny zobowiązać do SVN: git svn dcommit

Prawdopodobnie będziesz musiał użyć git stash i git stash pop, przed użyciem dwóch powyższych poleceń, gdy kopia robocza ma niezamierzone zmiany.