SVN Repository von Lokal nach Remote verschieben

So ein lokales SVN-Repository kann man sicher leicht auf einen Remote-Server verschieben, sollte man denken. Geht so, vor allem wenn man lokal nur EIN Repo hat mit Projekt-Unterverzeichnissen, und Remote dann (glücklicherweise) je Projekt ein Repo erstellt hat. Nun ja .. so gehts.

Lokale Arbeiten

Lokales Repo: /SVNROOT
Projektpfad im SVN: /CrmZeiterfassung (gibt es so nicht unterhalb SVNROOT)
ggf. lokale Änderungen einchecken!

svnadmin dump /SVNROOT > svnroot.svn_dump
svndumpfilter include CrmZeiterfassung < svnroot.svn_dump > zeiterfassung.svn_dump

Remote Arbeiten

svnadmin create /SVNROOT/zeiterfassung/
svnadmin load /SVNROOT/zeiterfassung >/var/www/vhosts/test.rh-flow.de/zeiterfassung.svn_dump

Da ich mit root importiert habe, werden nun noch paar Rechte gefixt:

chown -R www-data.subversion zeiterfassung/
chmod -R g+w zeiterfassung/

Ist nicht die feine englische Art, aber ist bei den anderen Repos auch so, und da weiß ich nicht mehr wie ich die angelegt und importiert habe.

Checkout

cd /var/www/vhosts/zeiterfassung
svn co /SVNROOT/zeiterfassung

oder halt per SSH von Remote Server:

svn co svn+ssh://username@andererrechner.tld/SVNROOT/zeiterfassung

Die Verzeichnisstruktur wird jetzt zeiterfassung/CrmZeiterfassung/branches o.ä. sein, also eine doppelte Struktur. Per svn move und svn delete und anschließendes svn commit bekommt man das aber hin. Bei mir ist nun aus zeiterfassung/CrmZeiterfassung/branches/prod einfach zeiterfassung/trunk geworden.

Für Tipps wie es besser geht, gerade die Rechte-Sache, gerne per Twitter @rhflow_de oder hier als Kommentar.

Quellen:

Pete Freitag: Moving a Subversion Repository to Another Server
Repository Maintenance: Dump & Filtering
SVN over ssh HOWTO