Subversion (SVN) is an open-source version control system. It helps you keep track of a collection of files and folders. Any time you change, add or delete a file or folder that you manage with Subversion, you commit these changes to your Subversion repository, which creates a new revision in your repository reflecting these changes. You can always go back, look at and get the contents of previous revisions.

Advertisement

This article will help you for step by step setup of subversion (svn) server on CentOS, Red Hat & Fedora systems.

Step 1 – Install Apache

Firstly, You need to install Apache web server to access svn server using HTTP URLs. Skip this step if you already have Apache web server on your system.

sudo yum install httpd     # For CentOS/RHEL 7/6
sudo dnf install httpd     # For  CentOS/RHEL 9/8 & Fedora 

Start Apache web server and setup to autostart on system boot

sudo systemctl restart httpd  
sudo systemctl enable httpd 

Step 2 – Install Subversion

Use following command to install subversion packages and there dependencies. Also install svn module for Apache mod_dav_svn packages on your system..

sudo yum install subversion mod_dav_svn 

Step 3 – Configure Subversion with Apache

Subversion module package creates an Apache configuration file, we just need to make necessary changes to it.

sudo nano /etc/httpd/conf.d/subversion.conf 

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

Alias /svn /var/svn

<Location /svn>
   DAV svn
   SVNParentPath /var/svn
   AuthType Basic
   AuthName "Subversion User Authentication "
   AuthUserFile /etc/svn-users
   Require valid-user
</Location>

Step 4 – Create First SVN Repository

Use following command to create your fist svn repository.

cd /var/svn 
svnadmin create myrepo  
chown -R apache.apache myrepo   

Step 5 – Create Users for Authenctication

Now add svn users in /etc/svn-users file. These users will use for authentication of svn repositories for checkout, commit processes. Following commands will add two users to /etc/svn-users file. I have created the file using touch command. This can be also created with -c switch in htpasswd command but remember that -c switch delete existing file and create a new file, So to avoid accidental removal of existing file we recommend to use touch command.

touch /etc/svn-users 
htpasswd -m /etc/svn-users user1 
htpasswd -m /etc/svn-users user2 

Step 6 – Access Repository in Browser

Use http urls to access your repository in browser. It will prompt for authentication. Use login credentials created in Step 5. Change example.com with your system host name, domain name or ip address.

http://example.com/svn/myrepo/

svn-server-login

Step 7 – Basic Operations on Repository

This step is for testing that repository is working properly. Use following commands to add few files to your svn repository.

  • Checkout repository on your local system. It will create the folder on local system with the repository name.
    svn co http://example.com/svn/myrepo/ 
    
  • Add some files to checkout repository directory.
    cd myrepo 
    touch file1.txt index.php 
    
  • Now add newly created files to svn repository and commit them to svn server repository.
    svn add file1.txt index.php 
    svn ci file1.txt index.php -m "initial commit" 
    

Let’s check back to http://example.com/svn/myrepo/ URL in browser. You will see your new files there.

Conclusion

You have successfully set up an SVN server on your CentOS, Fedora and other RHEL-based systems. This server provides a robust platform for managing your development projects. Remember, it’s crucial to back up your repositories regularly and keep your system updated for security.

For more advanced configurations, such as setting up SSL, refer to the official Subversion documentation. Happy version controlling!

You may also like our next article How to Backup and Restore SVN Repository in Linux.

Share.

16 Comments

  1. sanjeev Kumar N on

    Hi Rahul,

    I have followed the steps as per the link https://tecadmin.net/install-svn-1-9-on-centos/ and from 3 step i have followed the current link (https://tecadmin.net/setup-subversion-server-on-centos/) when we try to access repo getting error as.

    —-configuration file.——
    /etc/httpd/conf.d/subversion.conf

    Alias /svn /opt/repo

    DAV svn
    SVNPath /opt/repo/devops
    AuthType Basic
    AuthName “SVN Repo”
    #AuthUserFile /opt/WANdisco/apache22/conf/svn.passwd
    AuthUserFile /etc/svn-users
    AuthzSVNAccessFile /etc/svn_access_file
    Require valid-user

    —–error—-
    Forbidden

    You don’t have permission to access /svn/devops/ on this server.

    Thanks
    Sanjeev Kumar N

  2. Hello sir,

    Thanks.Ur tutorial is awesome, but can u pls add how to access the svn with LDAP users,.(Means needs to be integrate svn with LDAP)

    Thanks

  3. Fletcher Cocquyt on

    I had to comment out the

    Alias /svn /var/svn

    (and bounce apache) to get rid of the errors:

    svn: Repository moved permanently to ‘http://svn01/svn/scripts/’; please relocate”

    from the svn command line client

  4. Travis Beagley on

    I was unable to get authentication working using the above without also doing:

    chcon -R -t httpd_sys_content_t [repo name]

    (luckily this info was in the /etc/httpd/conf.d/subversion.conf file or I’d likely be missing patches of hair)

  5. Hi,

    I have done as per article above, but I am not able to access it using http url. my http is configured to access at /home/user/public_html/

    Now I have created a repo at /home/user/public_html/test
    &
    /var/www/svn/test1

    but I am not able to access both..

    what should be my value in step 3
    SVNParentPath /var/www/svn
    Thanks!

  6. I need to install apache svn on centOS but our data center is locked down so I can’t use yum or urls to install.
    How do I do this manually?

  7. I am trying to install SVN on Fedora 20 now. Both Fedora 20 and SVN are latest. I cannot find that subversion.conf file in your step 3. Anything wrong with the latest SVN and Fedora 20?

Exit mobile version