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.