SVN Installing subversion

Posted under » Version Control on 26 Feb 2019

You may have Apache installed already but you have to do it again

apt-get update
apt-get install apache2 apache2-utils
apt-get install subversion libapache2-mod-svn subversion-tools libsvn-dev

Somehow it will install postfix

a2enmod dav
a2enmod dav_svn
service apache2 restart

Since SVN is running as an apache DAV mod, you edit this file

vim /etc/apache2/mods-enabled/dav_svn.conf

#  ... 
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
<Location /svn>
  # Uncomment this to enable the repository
  DAV svn

  # Set this to the path to your repository
  #SVNPath /var/lib/svn
  # Alternatively, use SVNParentPath if you have multiple repositories under
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
  # You need either SVNPath and SVNParentPath, but not both.
  SVNParentPath /var/lib/svn

  # Access control is done at 3 levels: (1) Apache authentication, via
  # any of several methods.  A "Basic Auth" section is commented out
  # below.  (2) Apache  and , also commented out
  # below.  (3) mod_authz_svn is a svn-specific authorization module
  # which offers fine-grained read/write access control for paths
  # within a repository.  (The first two layers are coarse-grained; you
  # can only enable/disable access to an entire repository.)  Note that
  # mod_authz_svn is noticeably slower than the other two layers, so if
  # you don't need the fine-grained control, don't configure it.

  # Basic Authentication is repository-wide.  It is not secure unless
  # you are using https.  See the 'htpasswd' command to create and
  # manage the password file - and the documentation for the
  # 'auth_basic' and 'authn_file' modules, which you will need for this
  # (enable them with 'a2enmod').
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  # To enable authorization via mod_authz_svn (enable that module separately):
   #
  #AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  #

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.  It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  #
    Require valid-user
  # 
 </Location>

Create a SVN Repository in the /var/lib/svn directory as stated in the config path.

Everytime you need to create a new repo, you do this

$ svnadmin create /var/lib/svn/repository
$ sudo chown -R www-data:www-data /var/lib/svn
$ sudo chmod -R 775 /var/lib/svn

If you do not do the correct permissions as above, you will get this error
svn: Can't open file '/var/svn/foo/db/txn-current-lock': Permission denied

Now that your SVN repository is created, run the commands below to create an account name admin which is why we install apache2-utils. This is the same with squid authentication.

htpasswd -cm /etc/apache2/dav_svn.passwd admin

Type a password and continue to complete the setup. Repeat the step above to create additional users.

sudo htpasswd -m /etc/apache2/dav_svn.passwd user1
sudo htpasswd -m /etc/apache2/dav_svn.passwd user2

If you need to delete or remove a user

$ cd /etc/apache2/
$ htpasswd -D dav_svn.passwd user2

Please note in some systems instead of 'dav_svn.passwd', the file name is '.htpasswd'.

Restart Apache2. When you’re done, open your browser and browse to the reposotory, then logon.

If you are not accessing locally, create an SVN website by configuring and creating examplesvn.com website.
https://examplesvn.com/svn/repository

To find out the version, svn --version

The config are located at ~/.subversion/servers

web security linux ubuntu python django git Raspberry apache mysql php drupal cake javascript css AWS data