Subversion is a free and open-source version control system (VCS). It manages files and directories, and the changes made to them over time. This allows you to recover older versions of your data or examine the history of how your data changed.
Subversion can operate across networks, which allows it to be used by people on different computers. Subversion is used by developers, and advanced users who need the very latest changes to the software (before releases occur).
Install Subversion
On Ubuntu 13.04, perform the following to install:
[email protected]:~$ sudo apt-get install subversion libapache2-svn apache2
Configure Subversion
Create a directory for where you want to keep your subversion repositories:
[email protected]:~$ sudo mkdir /subversion [email protected]:~$ sudo chown -R www-data:www-data /subversion/
Open the subversion config file dav_svn.conf and add the lines at the end as shown below. Comment or delete all the other lines in the config file:
[email protected]:~$ sudo nano /etc/apache2/mods-enabled/dav_svn.conf [...] #</Location> <Location /subversion> DAV svn SVNParentPath /subversion AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
Now create a SVN user using the following command. Here I create a new SVN user called sk with password ubuntu:
[email protected]:~$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd sk New password: Re-type new password: Adding password for user sk
Use -cm parameter for the first time only, you can create another user with only -m parameter.
Create Subversion repository called unixmen.repo under /subversion directory:
s[email protected]:~$ cd /subversion/ [email protected]:/subversion$ sudo svnadmin create unixmen.repo
Restart Apache service:
[email protected]:~$ sudo /etc/init.d/apache2 restart  * Restarting web server apache2                                                ... waiting                                                            [ OK ]
Test Subversion
Open the browser and navigate to http://ip-address/subversion/unixmen.repo. Enter the SVN username and password which you have created in the earlier step. In my case, username is sk and password is ubuntu.
Now you will able to access your repository.
Disable Anonymous Access
Open the file svnserve.conf file and make the changes as shown below:
[email protected]:~$ sudo nano /subversion/unixmen.repo/conf/svnserve.conf [...] ## Uncomment and set to 'none' ## anon-access = none [...] ## uncomment ## authz-db = authz [...]
Create additional Directories(Links) in Subversion Repository
Create one or more directories:
[email protected]:~$ sudo mkdir templates [email protected]:~$ cd templates/ s[email protected]:~/templates$ sudo mkdir updates [email protected]:~/templates$ sudo mkdir patches
Now import them to your repository:
[email protected]:/templates$ sudo svn import -m 'Initial import' /templates/ http://192.168.1.200/subversion/unixmen.repo/ Authentication realm: <http://192.168.1.200:80> Subversion Repository Password for 'root': Authentication realm: <http://192.168.1.200:80> Subversion Repository Username: sk Password for 'sk': ----------------------------------------------------------------------- ATTENTION! Your password for authentication realm:   <http://192.168.1.200:80> Subversion Repository can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in '/home/sk/.subversion/servers'. ----------------------------------------------------------------------- Store password unencrypted (yes/no)? Please type 'yes' or 'no': yes Adding        updates Adding        patches Committed revision 1.
Now check for the changes in your repository. Navigate to http://192.168.1.200/subversion/unixmen.repo. You will see the newly created directories in your repositories.
That’s it.