Flyt repository
Først skal du lave et dump af det repository du vil flytte:
1 |
svnadmin dump /sti/til/repository > mit_repository.svn_dump |
… og overføre det til den nye server:
1 |
scp mit_repository.svn_dump mig@nyserver.com: |
På den nye server opretter du et nyt repository:
1 |
svnadmin create /sti/til/nyt/repository |
Konfigurer Apache
… og herefter konfigureres Apache. Jeg inkluderer desuden SSL og adgangskodebeskyttelse.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<VirtualHost *:443> DocumentRoot /sti/til/nyt/repository ServerName svn.nyserver.com ErrorLog "|/usr/bin/rotatelogs -l /var/log/subversion/svn-error.%Y.%m.%d 86400" CustomLog /var/log/subversion/svn-access_log "%t %u %{SVN-ACTION}e" env=SVN-ACTION <Location "/"> DAV svn SVNPath /sti/til/nyt/repository #Authenticated users only Require valid-user # authenticating them valid ones AuthType Basic AuthName "Subversion Repository" AuthUserFile /sti/til/passwd/.htpasswd-svn order deny,allow deny from all satisfy any </Location> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCACertificateFile /etc/ssl/local_certs/2018/intermediate.crt SSLCertificateFile /etc/ssl/local_certs/2018/public.crt SSLCertificateKeyFile /etc/ssl/local_certs/2018/private.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 <Directory /var/www/subversion> Options -Indexes </Directory> </VirtualHost> |
Efter genstart af Apache fik jeg denne fejl:
Det viser sig at der er 2 filer der loader dav:
mods-enabled/dav_svn.load
mods-enabled/dav.load
Den første tjekker om dav er loadet, inden den selv gør det. Men det gør sidstnævnte ikke. Det kan vi udbedre ved at åbne denne fil:
/etc/apache2/mods-available/dav.load
Og rette indholdet fra:
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
… til:
<IfModule !mod_dav.c>
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
</IfModule>
Æren for løsningen går til “Zilk” på Stackoverflow: Apache on Ubuntu: module dav_module is already loaded
Pege arbejdskopier over på den nye lokation
Du har sikkert en masse arbejdskopier af dit repository forskellige steder, og de skal nu peges over på den nye lokation. Du går derfor til roden af arbejdskopien og udfører følgende kommando:
1 |
svn switch --relocate https://svn.gammelserver.com/projekt/ https://svn.nyserver.com/projekt |
Hvis nogen har føjet ændringer til det gamle repository mens du flyttede det, kopierer du disse over:
På den gamle server:
1 |
svnadmin dump --incremental -r 1234 /sti/til/repository > rev1234.svn_dump |
På den nye server:
1 |
svnadmin load /sti/til/nyt/repository < rev1234.svn_dump |