Apache Subversion often abbreviated as SVN is a software versioning and revision control system. This post was written during a integration and PoC of SVN in a deployment stages.
SVN server installation
apt update apt install apache2 apt install subversion libapache2-mod-svn libsvn-dev
a2enmod dav_svn a2enmod dav
SVN server configuration
The apache2-module for SVN within the file is quiet short and understandable without additional comments.
<Location /svn> DAV svn SVNParentPath /var/lib/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
Create the directory structure for your repositories:
mkdir -p /var/lib/svn/ svnadmin create /var/lib/svn/<REPOSITORYNAME> chown -R www-data:www-data /var/lib/svn chmod -R 775 /var/lib/svn
Cerate SVN-user and set the user password:
htpasswd -cm /etc/apache2/dav_svn.passwd admin
Restart apache2 to take all changes in effect:
service apache2 restart
Access the repository
Access the just created repository over web browser: http://localhost/svn/powerx/
svn info http://localhost/svn/powerx # Or with a different username svn info http://localhost/svn/powerx --username admin
SVN worklow basics
# Create structure within repository and add files mkdir Deploy01 svn add Deploy01 svn commit Deploy01 -m 'Initial commit for deploy 01' # Update your working copy by fetching all changes svn update # See the overview over changes svn log
If you are looking for a SVN subcommand, help will help you :)
There a a lot clients for SVN out there, this is a short list of the most suitable clients:
– Windows: TortoiseSVN
– Linux: command line tool svn is available
– macOS: build in command line svn and Visual Studio Code has a required plugin also Eclipse has a not bad SVN integration.