SubGit (gegen Blue Screen of Death)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Es ist alles.
+ Zum Aktualisieren von SVN ein Git-Repository, das mit dem ersten Befehl erstellt wurde.
subgit import directory/path/Local.git.Repo
Ich habe eine Möglichkeit verwendet, um sofort auf Git zu migrieren und ein riesiges Repository zu erhalten.
Natürlich brauchen Sie etwas Vorbereitung.
Aber Sie können den Entwicklungsprozess überhaupt nicht stoppen.
Hier ist mein Weg.
Meine Lösung sieht aus wie:
- Migrieren Sie SVN in ein Git-Repository
- Aktualisieren Sie das Git-Repository kurz vor dem Wechsel des Teams zu .
Die Migration nimmt viel Zeit für ein großes SVN-Repository in Anspruch.
Die Aktualisierung der abgeschlossenen Migration dauert jedoch nur wenige Sekunden.
Natürlich benutze ich SubGit , Mama. git-svn macht mich zum Blue Screen of Death . Nur ständig. Und git-svn langweilt mich mit Gits schwerwiegendem Fehler " Dateiname zu lang ".
SCHRITTE
1. Laden Sie SubGit herunter
2. Bereiten Sie die Migrations- und Aktualisierungsbefehle vor.
Nehmen wir an, wir machen das für Windows (es ist trivial, auf Linux zu portieren).
In einer Installation des SubGit ist Verzeichnis (subgit-2.XX \ ist), erstellen Sie zwei .bat - Dateien.
Inhalt einer Datei / eines Befehls für die Migration:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Der Befehl "start" ist hier optional (Windows). Es ermöglicht das Anzeigen von Fehlern beim Start und lässt eine Shell nach Abschluss des SubGit geöffnet.
Sie können hier zusätzliche Parameter hinzufügen , die git-svn ähneln . Ich verwende nur --default-domain myCompanyDomain.com , um die Domain der E-Mail-Adresse von SVN-Autoren zu reparieren.
Ich habe die Standardstruktur des SVN-Repositorys (Trunk / Zweige / Tags) und wir hatten keine Probleme mit der "Autorenzuordnung". Also mache ich nichts mehr.
(Wenn Sie Tags wie Zweige migrieren möchten oder Ihr SVN mehrere Zweige / Tags-Ordner hat, können Sie den ausführlicheren SubGit- Ansatz verwenden. )
Tipp 1 : Verwenden Sie --minimal-revision YourSvnRevNumber, um schnell zu sehen, wie sich die Dinge entwickeln (eine Art Debugging). Besonders nützlich ist es, aufgelöste Autorennamen oder E-Mails anzuzeigen.
Oder um die Tiefe des Migrationsverlaufs zu begrenzen.
Tipp 2 : Die Migration kann unterbrochen ( Ctrl+ C) und durch Ausführen des nächsten Aktualisierungsbefehls / der nächsten Aktualisierungsdatei wiederhergestellt werden.
Ich rate nicht, dies für große Repositories zu tun. Ich habe "Java + Windows-Ausnahme" Nicht genügend Speicher "erhalten.
Tipp 3 : Erstellen Sie besser eine Kopie Ihres Ergebnis-Bare-Repositorys.
Inhalt einer Datei / eines Befehls zum Aktualisieren:
start subgit import directory/path/Local.git.Repo
Sie können es beliebig oft ausführen, wenn Sie die Commits des letzten Teams für Ihr Git-Repository erhalten möchten.
Warnung! Berühren Sie nicht Ihr nacktes Repository (z. B. Erstellung von Zweigen).
Sie werden den nächsten schwerwiegenden Fehler nehmen:
Nicht behebbarer Fehler: sind nicht synchron und können nicht synchronisiert werden ... Übersetzen von Subversion-Revisionen in Git-Commits ...
3. Führen Sie den ersten Befehl / die erste Datei aus. Für ein großes Repository wird es eine lange Zeit dauern. 30 Stunden für mein bescheidenes Repository.
Es ist alles.
Sie können Ihr Git-Repository jederzeit und beliebig oft von SVN aus aktualisieren, indem Sie die zweite Datei / den zweiten Befehl ausführen. Und bevor Sie Ihr Entwicklungsteam auf Git umstellen.
Es dauert nur Sekunden.
Es gibt noch eine nützliche Aufgabe.
Verschieben Sie Ihr lokales Git-Repository in ein entferntes Git-Repository
Ist es dein Fall? Fahren wir fort.
- Konfigurieren Sie Ihre Fernbedienungen
Lauf:
$ git remote add origin url://your/repo.git
- Bereiten Sie das erste Senden Ihres riesigen lokalen Git-Repositorys an ein Remote-Repository vor
Standardmäßig kann Ihr Git keine großen Chunks senden.
tödlich: Das entfernte Ende legte unerwartet auf
Lass uns losrennen:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB usw.
Beheben Sie die Probleme mit Ihrem lokalen Zertifikat . Wenn Ihr Git-Server ein defektes Zertifikat verwendet.
Ich habe Zertifikate deaktiviert .
Außerdem kann es auf Ihrem Git-Server zu Einschränkungen bei der Anforderungsmenge kommen, die korrigiert werden müssen .
- Übertragen Sie die gesamte Migration in das Remote-Git-Repository des Teams.
Führen Sie mit einem lokalen Git:
git push origin --mirror
( Git Push Origin '*: *' für alte Git-Versionen)
Wenn Sie Folgendes erhalten: Fehler: Git kann nicht erzeugt werden: Keine solche Datei oder kein solches Verzeichnis ... Für mich löst die vollständige Neuerstellung meines Repositorys diesen Fehler (30 Stunden). Sie können die nächsten Befehle ausprobieren
git push origin --all
git push origin --tags
Oder versuchen Sie, Git neu zu installieren ( für mich nutzlos ). Oder Sie können aus allen Tags Zweige erstellen und diese verschieben. Oder oder oder oder ...