Wznawiam klon git-svn


117

Zacząłem klonować repozytorium SVN za pomocą operacji klonowania git-svn. Po około 6 godzinach importowania (to duże repozytorium) mój komputer poszedł i spał na mnie. Czy istnieje sposób na wznowienie operacji bez ponownego wykonywania całej początkowej pracy?

Odpowiedzi:


156

git svn fetchKomenda wznowić git svn clonejest potwierdzone przez kilku źródeł:

(Nawiasem mówiąc, jeśli podczas początkowego etapu klonowania połączenie znika lub musisz je zatrzymać, aby wznowić klon, wystarczy uruchomić powyższe polecenie, aby wznowić pobieranie historii).

Wydaje się, że w programie jest wyciek pamięci git-svn. Rozmiar git-svnprocesu rósł powoli i po około dwóch tygodniach osiągnął rozmiar rezydenta 1,2 GB, w którym to momencie system operacyjny odmówił rozwidlenia.
Chodzi o to, że to było szczęście w nieszczęściu.
Udało mi się wznowić przerwany klon prostym " git svn fetch" i działał znacznie szybciej z teraz radykalnie mniejszą stertą.
To działało tak dobrze, że nabrałem zwyczaju przerywania i wznawiania procesu każdego wieczoru i każdego ranka. Kilka dni później było to zrobione.

Zaczynasz swoje przygody z git-svnklonowaniem istniejącego repozytorium Subversion:

git svn clone url://path/to/repo -s

-sFlag zakłada, że repozytorium wykorzystuje „pień, gałęzie, znaczniki” Konwencja. Jeśli nie, musisz ręcznie określić, które katalogi reprezentują gałęzie i tagi, jeśli chcesz, aby Git o nich wiedział.

Zajmie to dużo czasu, ponieważ pobierze każdą wersję z SVN i zatwierdzi lokalnie. Jeśli z jakiegoś powodu przestanie działać, możesz wznowić za pomocą git svn fetch.


1
Myślę, że niektóre z podanych opcji wiersza poleceń należy git svn clonerównież podać (jeśli dotyczy) git svn fetch. Na przykład, miałem ustawione -r HEADna git svn cloneuzyskać tylko rewizji HEAD SVN. Aby wznowić, uruchomiłem git svn fetch, który rozpoczął importowanie wszystkich wersji.
— amolbk

Zaczęło się od pierwszej wersji… Mam 10.000 zatwierdzeń! Jakieś przemyślenia, jak wznowić od miejsca, w którym zostało przerwane?
— Nathan JB

@ NathanJ.Brauer nie na czubku głowy. Możesz zadać nowe pytanie (z zastosowanym systemem operacyjnym, wersją git i wersją svn oraz linkiem do tej odpowiedzi w celu uzyskania kontekstu)
— VonC

1
Przypadkowo git svn cloneprzerwałem połączenie sieciowe , przerywając proces. Uruchomiony git svn cloneponownie pojawiła się na wznowienie klona-in-progress. Czy ktoś jeszcze to zrobił?
— Kehlan Krumme

1
@Kehlan Najwyraźniej tak, jeśli weźmiesz pod uwagę odpowiedź zan-xhipe poniżej
— VonC

17

Znalazłem post na blogu, który zawiera (mam nadzieję) poprawną odpowiedź.

Wygląda na to, że uruchomienie git svn fetchskutecznie kończy operację klonowania. Mamy nadzieję!


7
będziesz musiał użyć git svn rebasepo pobraniu, aby zakończyć operację i mieć gałąź główną odzwierciedlającą pień
— Romuald Brunet

Czy możesz podać link do wpisu na blogu do wykorzystania w przyszłości?
— jmanning2k

6

Jak powiedzieli VonC, CaptainAwesomePants i Archi, wszystko git svn fetchto załatwia sprawę . Robiłem git svn clone url... --authors-file=path/to/filei klon się nie powiódł, ponieważ jednego z autorów nie było w pliku autorów. Dodałem autora do pliku i uruchomiłem git svn fetchi kontynuowałem od miejsca, w którym zostało przerwane, i patrząc na dziennik gita później, wydaje się, że użył nowo dodanego autora, aby zastąpić nazwisko autora zatwierdzenia, więc wszystko było słodkie.


5

Od co najmniej gita 2.1.0 możesz wznowić, po prostu ponownie wydając git svn clone

Jednak spowoduje to zduplikowanie niektórych wpisów w twoim .git / config, usunie je i wszystko będzie dobrze


From at least git 2.1.0...Masz jakiś pomysł, czy ta funkcja istniała w git 1.9.1?
— CivFan

Przepraszam, nie mam już żadnych repozytoriów svn, aby to wypróbować.
— zan-xhipe

git svn fetchspowodowało niedopasowanie sumy kontrolnej - i nie można było go zresetować, ponieważ najwyraźniej nie było HEAD: / - ale to działa dobrze, po prostu musiałem usunąć svn-remote.fetchz.git/config
— OLL
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.