SVN Server
Export SVN repository
At first it seems quite forward to do this, but I have ran into the issue of encoding problems. And trying to get a huge (40G) dumpfile into the container.
What did work for me:
1. Have a bind path in your container, to manage the large file
2. Use the container and dump the file into this path
svnrdump dump -r0:HEAD [URL_TO_YOUR_REPO] > Your_dumpfile.dmp
This will show the progress as follows:
svnadmin load /path/yourrepo < /path/your/dum.dmp
What didn't work for me:
This is the official documentation : dump your SVN
svnadmin dump /path/to/your/old/repo > backup.dump
svnadmin load /path/to/your/new/repo < backup.dump.dmp
If you redirect the input to your host, it circumvents the large file in the docker.
cd /tmp
docker exec -it edf77623c9207 svnadmin dump /home/svn/YourRepository > YourRepository_svn.dmp
But importing it back, an error is produced:
' into a number04: Could not convert ' 2
Migrate configuration after export
After you have the repository in a dmp file, you don't have your configuration yet.
In my case with the docker, I can see which configuration files are required:
docker run -d --name svn-server -p 80:80 -p 3690:3690 -v <hostpath>:/home/svn -v svn_config:/etc/subversion -v svnadmin_config:/opt/svnadmin/data elleflorio/svn-server
In reality, I need to copy the following files over (and use my mapped drive to transfer these files before restarting the container)
/opt/svnadmin/data # cp /var/svnbackup/svnadmin/config.ini config.ini
/opt/svnadmin/data # cp /var/svnbackup/svnadmin/config.ini config.tpl.ini
/opt/svnadmin/data # cp /var/svnbackup/svnadmin/config.tpl.ini config.tpl.ini
/opt/svnadmin/data # cp /var/svnbackup/svnadmin/userroleassignments.ini userroleassignments.ini
/var/svnbackup # cp ./subversion/passwd /etc/subversion/passwd
/var/svnbackup # cp ./subversion/subversion-access-control /etc/subversion/subve
/home/svn/YourRepo/conf # cp /var/svnbackup/conf/hooks-env.tmpl hooks-env.tmpl
/home/svn/YourRepo/conf # cp /var/svnbackup/conf/passwd passwd
/home/svn/YourRepo/conf # cp /var/svnbackup/conf/authz authz
/home/svn/YourRepo/conf # cp /var/svnbackup/conf/svnserve.conf svnserve.conf
In windows, to switch the clients, you can use your hosts file. So your existing projects just keep working as they always have. (provided you've used the same URL before with another IP)