Subversion
Synonyms:
Setup a private subversion server for your code is important and easy.
Install apache2 with subversion support
Apache2 goes with a self-signed certificate, that is enough for a private subversion server.
sudo apt update && sudo apt -y install subversion libapache2-mod-svn apache2 apache2-utils
sudo a2enmod authz_svn
sudo a2enmod ssl
sudo a2dissite 000-default
sudo a2ensite default-ssl
sudo systemctl restart apache2
navigate the browser to your server ip will shows a certificate warning, skip the warning will shows a default apache page.
https://{{ ip.value }}/
Config apache2 website
sudo {{ texteditor.value }} /etc/apache2/sites-enabled/default-ssl.conf
add after <VirtualHost default:443>
LimitXMLRequestBody 8000000
LimitRequestBody 0
<Location {{ urlpath.value }}>
DAV svn
SVNParentPath {{ filepath.value }}
AuthzSVNAccessFile {{ authz_file.value }}
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile {{ passwd_file.value }}
Require valid-user
</Location>
Add SVN user name and password
# first time create
sudo htpasswd -cm {{ passwd_file.value }} {{ svnuser.value }}
# add svn user
sudo htpasswd -m {{ passwd_file.value }} {{ svnuser.value }}
# edit this file
sudo {{ texteditor.value }} {{ passwd_file.value }}
Create SVN Repositories
sudo mkdir -p {{ filepath.value }} && sudo svnadmin create {{ filepath.value }}/{{ svnrepo.value }}
sudo chown -R www-data:www-data {{ filepath.value }}
Edit SVN Authz
sudo {{ texteditor.value }} {{ authz_file.value }}
[groups]
developers = {{ svnuser.value }}
[{{ svnrepo.value }}:/]
@developers = rw
Restart Apache2
sudo /etc/init.d/apache2 restart
Finished
Now, the subversion server is ready, time to checkout!
https://{{ ip.value }}{{ urlpath.value }}/{{ svnrepo.value }}
SVN Client Command
svn info
svn switch --relocate old-svn-url new-svn-url