Wiederaufnahme des Git-SVN-Klons

116

Ich habe angefangen, ein SVN-Repository mithilfe der Klonoperation von git-svn zu klonen. Nach ungefähr 6 Stunden Importieren (es ist ein großes Repo) ging mein Computer und schlief auf mir. Gibt es eine Möglichkeit, den Vorgang fortzusetzen, ohne die gesamte anfängliche Arbeit zu wiederholen?

Brandon Yarbrough
quelle

Antworten:

155

Der git svn fetchBefehl zum Fortsetzen von a git svn clonewird von mehreren Quellen bestätigt:

(Wenn Ihre Verbindung während des ersten Klonschritts unterbrochen wird oder Sie sie beenden müssen, müssen Sie nur den obigen Befehl ausführen, um den Download des Verlaufs fortzusetzen.)

Es scheint ein Speicherverlust zu sein git-svn. Die Größe des git-svnProzesses wuchs langsam und nach etwa zwei Wochen hatte er eine Größe von 1,2 GB. Zu diesem Zeitpunkt weigerte sich das Betriebssystem, ihn zu teilen.
Die Sache ist, das war ein Segen in der Verkleidung.
Ich konnte den unterbrochenen Klon mit einem einfachen " git svn fetch" fortsetzen und er lief mit dem jetzt radikal kleineren Haufen viel schneller.
Dies funktionierte tatsächlich so gut, dass ich mir angewöhnte, den Prozess jeden Abend und jeden Morgen zu unterbrechen und neu zu starten. Ein paar Tage später war es geschafft.

Sie beginnen Ihre Abenteuer mit git-svndem Klonen eines vorhandenen Subversion-Repositorys:

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

Das -sFlag setzt voraus, dass Ihr Repository die Konvention "Trunk, Zweige, Tags" verwendet. Wenn nicht, müssen Sie manuell angeben, welche Verzeichnisse Zweige und Tags darstellen, wenn Git darüber informiert werden soll.

Dies wird lange dauern, da jede einzelne Revision von SVN abgerufen und lokal festgeschrieben wird. Wenn es aus irgendeinem Grund aufhört, können Sie mit fortfahren git svn fetch.

VonC
quelle
1
Ich denke, einige der bereitgestellten Befehlszeilenoptionen git svn clonemüssen (sofern zutreffend) auch bereitgestellt werden git svn fetch. Zum Beispiel hatte ich eingestellt -r HEADfür git svn clonenur die HEAD SVN Revision zu erhalten. Um fortzufahren, lief ich git svn fetch, was begann, alle Revisionen zu importieren.
Amolbk
Dies hat alles von der ersten Überarbeitung an neu begonnen ... Ich habe 10.000 Commits! Irgendwelche Gedanken darüber, wie man dort weitermachen kann, wo es aufgehört hat?
Nathan JB
@ NathanJ.Brauer nicht auf meinem Kopf. Sie könnten eine neue Frage stellen (mit dem verwendeten Betriebssystem, der Git-Version und der SVN-Version sowie einem Link zurück zu dieser Antwort für den Kontext)
VonC
1
Ich habe währenddessen versehentlich meine Netzwerkverbindung git svn cloneunterbrochen und den Vorgang unterbrochen. Das git svn cloneerneute Ausführen schien den laufenden Klon fortzusetzen. Hat das noch jemand gemacht?
Kehlan Krumme
1
@ Kehlan Anscheinend so, wenn Sie Zan-Xhipes Antwort unten betrachten
VonC
17

Ich habe einen Blogbeitrag gefunden , der (wie ich hoffe) eine richtige Antwort liefert.

Anscheinend schließt das git svn fetcheffektive Ausführen den Klonvorgang ab. Wir hoffen!

Brandon Yarbrough
quelle
7
Sie müssen git svn rebasenach dem Abrufen verwenden, um den Vorgang abzuschließen und den Hauptzweig den Stamm widerspiegeln zu lassen
Romuald Brunet
Könnten Sie einen Link zum Blog-Beitrag zur späteren Bezugnahme bereitstellen?
jmanning2k
6

Wie VonC, CaptainAwesomePants und Archi sagten, git svn fetchmacht das alles den Trick. Ich habe ein gemacht git svn clone url... --authors-file=path/to/fileund der Klon ist fehlgeschlagen, weil einer der Autoren nicht in der Autorendatei war. Ich habe den Autor zu der Datei hinzugefügt und bin gelaufen, git svn fetchund es wurde dort fortgesetzt, wo es aufgehört hat. Wenn ich mir später das Git-Protokoll ansehe, scheint es, dass der neu hinzugefügte Autor den Namen des Commit-Autors ersetzt hat, sodass alles süß war.

Tom Saleeba
quelle
5

Ab mindestens Git 2.1.0 können Sie fortfahren, indem Sie einfach neu ausgeben git svn clone

Dies wird jedoch einige Einträge in Ihrer .git / config duplizieren, diese entfernen und alles wird in Ordnung sein

zan-xhipe
quelle
From at least git 2.1.0...Irgendeine Idee, ob diese Funktion bei Git 1.9.1 vorhanden war?
CivFan
Entschuldigung, ich habe keine SVN-Repositories mehr, um dies anzuprobieren.
Zan-Xhipe
git svn fetchverursachte eine Prüfsummenfehlanpassung für mich - und war unmöglich zurückzusetzen, da es anscheinend keinen KOPF gab: / - aber das funktioniert gut, musste nur die svn-remote.fetchvon.git/config
OLL