{"id":758,"date":"2016-12-21T14:04:27","date_gmt":"2016-12-21T14:04:27","guid":{"rendered":"http:\/\/192.168.2.32:8082\/?p=758"},"modified":"2019-01-03T10:10:44","modified_gmt":"2019-01-03T10:10:44","slug":"subversion-auf-ubuntu-16-04-installierenmigrieren","status":"publish","type":"post","link":"https:\/\/www.dev-metal.ch\/?p=758","title":{"rendered":"Subversion auf Ubuntu 16.04 installieren\/migrieren"},"content":{"rendered":"<p>Dieser Beitrag dient mir um meine durchgef\u00fchrten Schritte sp\u00e4ter nachvollziehen zu k\u00f6nnen.<\/p>\n<p>Ich installiere einen Subversion-Server und migriere meine alten Repositories aus Subversion Version 1.6 nach Version 1.9.<\/p>\n<h2>Subversion und Apache installieren<\/h2>\n<pre class=\"lang:sh decode:true\">sudo apt install subversion apache2 libapache2-svn<\/pre>\n<p>Subversion-Gruppe erstellen<\/p>\n<pre class=\"lang:sh decode:true\">sudo addgroup subversion<\/pre>\n<p>Eigener User sowie Apache User der Subversion-Gruppe hinzuf\u00fcgen<\/p>\n<pre class=\"lang:sh decode:true\">sudo adduser www-data subversion\r\nsudo adduser &lt;eigenerUser&gt; subversion<\/pre>\n<p>Anschliessend aus- und wieder einloggen. Erst dann werden die \u00c4nderungen aktiv.<\/p>\n<p>Nun das SVN-Home und Projekt-Verzeichnis anlegen<\/p>\n<pre class=\"lang:sh decode:true\">sudo mkdir \/home\/svn\r\ncd \/home\/svn\r\nsudo mkdir myproject<\/pre>\n<p>Nun das Subversion-Repository f\u00fcr das Projekt erstellen<\/p>\n<pre class=\"lang:sh decode:true\">sudo svnadmin create \/home\/svn\/myproject<\/pre>\n<p>Berechtigungen setzen<\/p>\n<pre class=\"lang:sh decode:true\">cd \/home\/svn\r\nsudo chown -R www-data:subversion myproject\r\nsudo chmod -R g+rws myproject<\/pre>\n<h2>WebDAV f\u00fcr Subversion konfigurieren<\/h2>\n<p>Config-File \/etc\/apache2\/mods-available\/dav_svn.conf anpassen<\/p>\n<pre class=\"lang:sh decode:true\">  &lt;Location \/svn&gt;\r\n     DAV svn\r\n     SVNParentPath \/home\/svn\r\n     SVNListParentPath On\r\n     AuthType Basic\r\n     AuthName \"Subversion Repository\"\r\n     AuthUserFile \/etc\/subversion\/passwd\r\n     Require valid-user\r\n     LimitXMLRequestBody 0\r\n  &lt;\/Location&gt;<\/pre>\n<p>Apache restarten<\/p>\n<pre class=\"lang:sh decode:true\">sudo service apache2 restart<\/pre>\n<p>User-File f\u00fcr Zugang auf WebDAV erstellen<br \/>\ndie -c Option nur beim erstellen verwenden. Bei Modifikationen eines bestehenden Files den Befehl ohne -c ausf\u00fchren.<\/p>\n<pre class=\"lang:sh decode:true\">sudo htpasswd -c \/etc\/subversion\/passwd user_name<\/pre>\n<p>Jetzt kann das vorhin erstellte Projekt \u00fcber WebDAV ausgecheckt werden. Versuchen wir&#8217;s:<\/p>\n<pre class=\"lang:sh decode:true\">svn co http:\/\/hostname\/svn\/myproject myproject --username user_name<\/pre>\n<h2>Migrieren der Repositories des alten Servers in den neuen Server<\/h2>\n<p>Dazu exportieren ich das alte Repository in ein Dump-File:<\/p>\n<pre class=\"lang:sh decode:true\">svnadmin dump --quiet \/home\/svn\/myproject &gt; myproject.dump<\/pre>\n<p>Es besteht nun auch die M\u00f6glichkeit aus diesem Dump-File spezielle Verzeichnisse weiter zu exportieren:<\/p>\n<pre class=\"lang:sh decode:true\">cat myproject.dump | svndumpfilter include trunk\/subproject &gt; subproject.dump<\/pre>\n<p>Nun kann das Dump-File auf dem neuen Server importiert werden<\/p>\n<pre class=\"lang:sh decode:true\">svnadmin load --quiet \/home\/svn\/myproject &lt; subproject.dump<\/pre>\n<p>Achtung: Wenn man ein Subfolder importiert, m\u00fcssen die Parent-Folder exsistieren, sonst gibts einen Fehler &#8222;svnadmin: E160013: Datei nicht gefunden: \u00bb\/trunk\/myproject\u00ab<br \/>\nIn diesem Falle muss also noch &#8222;trunk&#8220; als Folder im neuen &#8222;myproject&#8220; erstellt werden.<\/p>\n<pre class=\"lang:sh decode:true\"> svn mkdir http:\/\/localhost\/svn\/pvs2\/trunk -m \"Create the trunk folder\" --username=ralph<\/pre>\n<h2><a href=\"http:\/\/192.168.2.32:8082\/wp-content\/uploads\/2016\/12\/svndumpfilter3.txt\">svndumpfilter3<\/a><\/h2>\n<p>Es kann vorkommen, dass das extrahieren von tags mit dem Fehler &#8222;svndumpfilter: Ung\u00fcltiger Quellpfad einer Kopie&#8220; fehlschl\u00e4gt. Das kann offenbar auftreten, wenn man Files\/Order im Repository kopiert\/verschoben hat. Selbstverst\u00e4ndlich habe ich das \ud83d\ude42<br \/>\nDie L\u00f6sung bietet eine Erweiterung von svndumpfilter, svndumpfilter3. Gefunden <a href=\"http:\/\/furius.ca\/pubcode\/pub\/conf\/bin\/svndumpfilter3.html#id7\">hier<\/a>. Dieses Phyton-Script herunterladen und folgendermassen starten:<\/p>\n<pre class=\"lang:sh decode:true\">cat svn-projects.dump | .\/svndumpfilter3 --untangle=\/var\/svn-repos\/projects tags\/pvs2 &gt; pvs2-tags.dump<\/pre>\n<p>Die &#8211;untangle Option zeigt auf das lokale SVN-Repository Root. Svndumpfliter3 benutzt dieses Repository um die Probleme auzul\u00f6sen bzw. zu convertieren.<\/p>\n<h2>Reverse Proxy<\/h2>\n<p>Meinen Subversion-Server betreibe ich hinter einem Apache2 Reverse Proxy. Damit dies auch sauber funktioniert muss der redirect auf dem ReverseProxy angepasst werden. Anosten kann es zu 405-Fehlern kommen &#8222;Method not allowed&#8220;. Dazu definiere ich im VirtualHost folgende Location:<\/p>\n<pre class=\"lang:sh decode:true\">&lt;Location \/ &gt;\r\n   &lt;Limit OPTIONS PROPFIND GET REPORT MKACTIVITY PROPPATCH PUT CHECKOUT MKCOL MOVE COPY DELETE LOCK UNLOCK MERGE&gt;\r\n      Order Deny,Allow\r\n      Allow from all\r\n      Satisfy Any\r\n    &lt;\/Limit&gt;\r\n&lt;\/Location&gt;<\/pre>\n<h2>Referenzen<\/h2>\n<ul>\n<li><a href=\"https:\/\/help.ubuntu.com\/community\/Subversion\" target=\"_blank\">https:\/\/help.ubuntu.com\/community\/Subversion<\/a><\/li>\n<li><a href=\"https:\/\/help.ubuntu.com\/lts\/serverguide\/subversion.html\" target=\"_blank\">https:\/\/help.ubuntu.com\/lts\/serverguide\/subversion.html<\/a><\/li>\n<li><a href=\"https:\/\/www.nuxeo.com\/blog\/dump-load-svn-repositories-using-svnadmin-svndumpfilter\/\" target=\"_blank\">https:\/\/www.nuxeo.com\/blog\/dump-load-svn-repositories-using-svnadmin-svndumpfilter\/<\/a><\/li>\n<li><a href=\"http:\/\/furius.ca\/pubcode\/pub\/conf\/bin\/svndumpfilter3.html#id7\" target=\"_blank\">http:\/\/furius.ca\/pubcode\/pub\/conf\/bin\/svndumpfilter3.html#id7<\/a><\/li>\n<li><a href=\"http:\/\/silmor.de\/proxysvn.php\" target=\"_blank\">http:\/\/silmor.de\/proxysvn.php<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Beitrag dient mir um meine durchgef\u00fchrten Schritte sp\u00e4ter nachvollziehen zu k\u00f6nnen. Ich installiere einen Subversion-Server und migriere meine alten Repositories aus Subversion Version 1.6 nach Version 1.9. Subversion und Apache installieren sudo apt install subversion apache2 libapache2-svn Subversion-Gruppe erstellen sudo addgroup subversion Eigener User sowie Apache User der Subversion-Gruppe hinzuf\u00fcgen sudo adduser www-data subversion [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[34,3,1],"tags":[],"class_list":["post-758","post","type-post","status-publish","format-standard","hentry","category-apachewebserver","category-linux","category-ubuntu"],"modified_by":"ralph","_links":{"self":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=758"}],"version-history":[{"count":21,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/758\/revisions"}],"predecessor-version":[{"id":782,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/758\/revisions\/782"}],"wp:attachment":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}