Konvertieren eines SVN checkout git zu verwenden (git-svn)
-
05-07-2019 - |
Frage
ich mit Software arbeiten, die in SVN für die Versionskontrolle gehalten wird. Ich möchte git verwenden (git-svn) aber die Software eine Menge Setup und Konfiguration erfordert, bevor es verwendet werden kann. Es gibt Werkzeuge, die von allen Setup kümmern, einschließlich der Überprüfung aus dem gesamten Code über svn.
die gesamte Dokumentation für git-svn (ich habe in der Lage gewesen zu finden) erfordert eine neue Kasse, mit git-svn.
Gibt es eine Möglichkeit, eine bestehende SVN-Kasse zu konvertieren, so kann es git-svn?
Lösung
Sie können etwas tun:
- Sie einen vollständigen Klon des SVN Baum mit git-svn, in ein temporäres Verzeichnis. Stellen Sie sicher, dass Sie genau die gleiche Version wie Ihre bestehende Kasse verwenden.
- Bewegen Sie die „.git“ Ordner auf der obersten Ebene der git-svn Kasse in die obersten Ebene des SVN Checkout.
- Dann müssen Sie entweder Git sagen, die „.svn“ Verzeichnisse zu ignorieren, oder Sie können sie alle löschen.
- Löschen Sie die git-svn Kasse.
- So, jetzt können Sie Ihre vorhandenen Dateien mit Git und git-svn manipulieren.
- Starten Sie eine „git status“ und hoffen, dass sie sagt, gibt es keine Änderungen.
Andere Tipps
Nein. Ein GIT-Svn clone wandelt das gesamte Repository in git. SVN-Kassen haben nicht das gesamte Repository und können daher nicht aus geklont werden. Dies ist der Hauptvorteil von SVN oder CVS auf ein verteiltes Vermittlungssystem (wie GIT).
Ich nehme an, Sie wahrscheinlich die Geschichte behalten wollen. Doch im Fall, dass Sie (oder jemand anderes, der auf dieser Seite stolpert) Geschichte nicht benötigen, können Sie den „Export“ Funktion verwenden, wie hier erläutert: https://stackoverflow.com/a/419475/2437521 .
Eine andere Möglichkeit, dies zu tun, die nicht die ursprüngliche Subversion-Arbeitskopie nicht verändert und erfordert nicht Sie es zu kopieren, wird unter Verwendung eines Pflasters:
- Sie einen vollständigen Klon Ihrer Subversion Baum mit git-svn, in ein neues Verzeichnis, das die Git-Repository sein wird. Stellen Sie sicher, dass Sie genau die gleiche Version wie Ihre bestehende Kasse verwenden. Sie
git reset --hard :/r<revision>
verwenden können, um es zu zwingen die gleiche Revision nach dem Klonen zu sein, wo<revision>
die Revision, die die Subversion-Arbeitskopie aktualisiert (siehe dies mitsvn info
dort). -
cd
auf Ihre Subversion-Arbeitskopie. - Verwenden Sie
svn status
um sicherzustellen, dass alle neuen Dateien mitA
markiert sind (odersvn add
sie hinzufügen verwenden) und alle gelöschten Dateien mitD
sind markiert (odersvn rm
verwenden, um sie zu löschen). - Ausführen
svn diff >patch.diff
eine Patch-Datei zu erstellen. - Kopieren
patch.diff
an die Spitze der zuvor erstellten Git-Repository. -
cd
an die Spitze der zuvor erstellten Git-Repository. - Ausführen
git apply -p0 patch.diff
den Patch auf dem Arbeitsbaum der Git-Repository anzuwenden.
Jetzt können Sie die Änderungen mit git status
gehen, und git add
/ git commit
sie sie in Ihrem lokalen Repository zu speichern.