Wenn Sie das Repository verschieben und den Verlauf beibehalten möchten, benötigen Sie wahrscheinlich auf beiden Hosts Zugriff auf das Dateisystem. Die einfachste Lösung, wenn Ihr Backend FSFS ist (die Standardeinstellung in neueren Versionen), besteht darin, eine Dateisystemkopie des gesamten Repository-Ordners zu erstellen.
Wenn Sie ein Berkley DB-Backend haben, sich nicht sicher sind, was Ihr Backend ist, oder wenn Sie die SVN-Versionsnummern ändern, sollten Sie svnadmin verwenden, um Ihr altes Repository zu sichern und in Ihr neues zu laden Repository. Wenn svnadmin dump
Sie verwenden, erhalten Sie eine einzelne Dateisicherung, die Sie auf das neue System kopieren können. Anschließend können Sie das neue (leere) Repository erstellen und verwenden svnadmin load
, wodurch im Wesentlichen alle Commits zusammen mit den Metadaten (Autor, Zeitstempel usw.) wiedergegeben werden.
Weitere Informationen zum Dump / Load-Prozess finden Sie hier:
http://svnbook.red-bean.com/de/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate
Wenn Sie dies tun svnadmin load
, stellen Sie außerdem sicher, dass Sie die --force-uuid
Option verwenden, da sonst Probleme beim Wechsel zum neuen Repository auftreten können. Subversion verwendet eine UUID, um das Repository intern zu identifizieren, und ermöglicht es Ihnen nicht, eine Arbeitskopie in ein anderes Repository zu wechseln.
Wenn Sie keinen Zugriff auf das Dateisystem haben, gibt es möglicherweise andere Optionen von Drittanbietern (oder Sie können etwas schreiben), die Sie bei der Migration unterstützen: Im Wesentlichen müssten Sie das SVN-Protokoll verwenden, um jede Revision im neuen Repository wiederzugeben, und Korrigieren Sie anschließend die Metadaten. Dazu benötigen Sie die Hook-Skripte Pre-Revprop-Change und Post-Revprop-Change, die den Zugriff auf das Dateisystem voraussetzen, also YMMV. Wenn Sie den Verlauf nicht beibehalten möchten, können Sie Ihre Arbeitskopie zum Importieren in das neue Repository verwenden. Aber hoffentlich ist das nicht der Fall.
svnrdump dump https//remote/svn/trunk > repos.dump
. In den meisten Fällen funktioniert der Befehl auch mit SVN 1.6, es können jedoch einige Probleme auftreten (siehe Dokumentation). Funktioniert sowohl unter * nix als auch unter Windows.rsvndump
hat bei der Migration eines Repositorys von svnrepository.com auf einen von mir kontrollierten Ubuntu-Server hervorragend funktioniert.So installieren und verwenden Sie rsvndump unter Ubuntu:
Installieren Sie fehlende Abhängigkeiten ("APR" - und Subversion-Bibliotheken)
Installieren Sie rsvndump
Speichern Sie das Remote-SVN-Repository in einer lokalen Datei
Erstellen Sie ein neues Repository und laden Sie es in die lokale Dump-Datei
quelle
svn switch --relocate http://my.svnrepository.com/svn/old_repo http://newserver.com/svn/my_new_repo
Sie können auch svnsync verwenden. Dies erfordert nur Lesezugriff auf das Quell-Repository
mehr bei svnbook
quelle
Auszug aus meinem Blog-Hinweis an mich :
Jetzt können Sie eine Dump-Datei importieren, z. B. wenn Sie zwischen Maschinen / Subversion-Versionen migrieren. Beispiel, wenn ich eine Dump-Datei aus dem Quell-Repository erstellt und wie unten gezeigt in das neue Repository geladen habe.
Befehle für Unix-ähnliche Systeme (vom Terminal):
Befehle für Microsoft Windows-Systeme (von der cmd-Shell):
quelle
Das Werkzeug dafür wäre
Damit dies funktioniert, benötigen Sie jedoch Dateisystemzugriff auf das Repository. Sobald Sie dies haben (und vorausgesetzt, das Repository hat das FSFS-Format), können Sie das Repository einfach an seinen neuen Speicherort kopieren (wenn es im BDB-Format vorliegt, wird Dump / Load dringend empfohlen).
Wenn Sie keinen Zugriff auf das Dateisystem haben, müssen Sie Ihren Repository-Anbieter bitten, den Speicherauszug für Sie bereitzustellen (und ihn dazu bringen, sein Repository zu löschen - und hoffen, dass er den Anforderungen entspricht).
quelle
Wenn Sie keinen Dateizugriff auf das Repository haben, bevorzuge ich rsvndump (Remote-Subversion-Repository-Dump), um die Dump-Datei zu erstellen.
quelle
Grundsätzlich gibt es viele Möglichkeiten, die Aufgabe zu erfüllen. Das Thema wird in SVNBook | ausführlich behandelt Repository-Daten an anderer Stelle migrieren , daher empfehle ich, den Abschnitt des Buches zu lesen.
Hier ist eine kurze Beschreibung Ihrer Optionen:
Es hängt von Ihrer Umgebung ab, aber es besteht eine große Chance, dass Sie das Repository einfach auf den neuen Server kopieren können und es funktioniert. Sie müssen die Repository-Hook-Skripte nach dem Kopieren des Repos überarbeiten, um sicherzustellen, dass sie wie erwartet funktionieren.
Sie können
svnadmin dump
undsvnadmin load
Befehle verwenden, um einen vollständigen Speicherauszug zu generieren und ihn dann in ein anderes Repository auf einem anderen Server zu laden. Sie benötigensvnadmin create
ein neues sauberes Repository, um den Speicherauszug darin zu laden. Beachten Sie, dass der Ansatz nur den Repository-Verlauf behandelt und keine Hook-Skripte und Repository-Konfigurationsdateien verschiebt ! Außerdem müssen Sie über einen Lesezugriff des Dateisystems auf das ursprüngliche Repository verfügen, um es zu sichern.Seit Subversion 1.7 ist das
svnrdump
Tool verfügbar. Im Allgemeinen ahmt essvnadmin dump
undsvnadmin load
Funktionalität nach, arbeitet aber remote. Sie müssen keinen Lese- / Schreib-Dateisystemzugriff auf Original- und Ziel-Repositorys haben, da das Tool wie ein Subversion-Client remote arbeitet, z. B. über das HTTPS-Protokoll. Sie müssen also Lesezugriff auf das ursprüngliche Repository haben und in das Ziel-Repository lesen / schreiben.Eine andere Möglichkeit ist die Verwendung eines
svnadmin hotcopy
Befehls. Der Befehl wird hauptsächlich zu Sicherungszwecken verwendet. Er erstellt eine vollständige Kopie des Repositorys einschließlich Konfigurations- und Hook-Skripten. Sie können das Hotcopy-Repository dann auf einen anderen Server verschieben.quelle
Sie können auch den folgenden
svnadmin hotcopy
Befehl verwenden:Es wird eine vollständige Sicherung aus dem Repository erstellt, einschließlich aller Hooks, Konfigurationsdateien usw.
Mehr bei SVN Book
quelle
Angenommen, Sie verfügen über die erforderlichen Berechtigungen zum Ausführen von svnadmin, müssen Sie die Befehle dump und load verwenden .
quelle
Ich habe einen Artikel darüber gefunden, wie man SVN-Repositorys von einem Hosting-Dienst auf einen anderen verschiebt und wie man lokale Backups erstellt:
Definieren Sie, wo Sie Ihre Repositorys speichern möchten:
svnadmin create $MYREPO
Erstellen Sie eine Hook-Datei und machen Sie sie ausführbar:
Jetzt können wir mit dem Import des Repositorys beginnen
svnsync
, wodurch ein Ziel-Repository für die Synchronisierung aus einem anderen Repository initialisiert wird:Und der letzte Schliff, um alle ausstehenden Revisionen von der Quelle, mit der sie initialisiert wurden, an das Ziel zu übertragen:
Dort haben Sie jetzt ein lokales SVN-Repository im
~/repo
Verzeichnis.Quelle:
quelle
Hilfe zum Migrieren von SVN-Repositorys finden Sie möglicherweise in Kapitel 5. Repository-Verwaltung, Migrieren eines Repositorys .
Dieser Ansatz erfordert den Zugriff auf svnadmin.
quelle