##// END OF EJS Templates
polymer: initialize as soon as possible
polymer: initialize as soon as possible

File last commit:

r681:322327cb stable
r690:a5fa0fb1 default
Show More
svn-http.rst
128 lines | 4.1 KiB | text/x-rst | RstLexer

|svn| With Write Over HTTP

To use |svn| with read/write support over the |svn| protocol, you have to configure HTTP |svn| backend.

Prerequisites

  • Enable HTTP support inside labs setting on your |RCE| instance, see :ref:`lab-settings`.
  • You need to install the following tools on the machine that is running an instance of |RCE|: Apache HTTP Server and mod_dav_svn.

Using Ubuntu Distribution as an example you can run:

$ sudo apt-get install apache2 libapache2-mod-svn

Once installed you need to enable dav_svn:

$ sudo a2enmod dav_svn

Configuring Apache Setup

Tip

It is recommended to run Apache on a port other than 80, due to possible conflicts with other HTTP servers like nginx. To do this, set the Listen parameter in the /etc/apache2/ports.conf file, for example Listen 8090.

Warning

Make sure your Apache instance which runs the mod_dav_svn module is only accessible by RhodeCode. Otherwise everyone is able to browse the repositories or run subversion operations (checkout/commit/etc.).

It is also recommended to run apache as the same user as |RCE|, otherwise permission issues could occur. To do this edit the /etc/apache2/envvars

export APACHE_RUN_USER=rhodecode
export APACHE_RUN_GROUP=rhodecode
  1. To configure Apache, create and edit a virtual hosts file, for example :file:`/etc/apache2/sites-available/default.conf`. Below is an example how to use one with auto-generated config `mod_dav_svn.conf` from configured |RCE| instance.
<VirtualHost *:8080>
    ServerAdmin rhodecode-admin@localhost
    DocumentRoot /var/www/html
    ErrorLog ${'${APACHE_LOG_DIR}'}/error.log
    CustomLog ${'${APACHE_LOG_DIR}'}/access.log combined
    Include /home/user/.rccontrol/enterprise-1/mod_dav_svn.conf
</VirtualHost>
  1. Go to the :menuselection:`Admin --> Settings --> Labs` page, and enable :guilabel:`Proxy Subversion HTTP requests`, and specify the :guilabel:`Subversion HTTP Server URL`.

  2. Open the |RCE| configuration file, :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`

  3. Add the following configuration option in the [app:main] section if you don't have it yet.

    This enable mapping of created |RCE| repo groups into special |svn| paths. Each time a new repository group will be created the system will update the template file, and create new mapping. Apache web server needs to be reloaded to pick up the changes on this file. It's recommended to add reload into a crontab so the changes can be picked automatically once someone creates an repository group inside RhodeCode.

##############################################
### Subversion proxy support (mod_dav_svn) ###
##############################################
## Enable or disable the config file generation.
svn.proxy.generate_config = true
## Generate config file with `SVNListParentPath` set to `On`.
svn.proxy.list_parent_path = true
## Set location and file name of generated config file.
svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
## File system path to the directory containing the repositories served by
## RhodeCode.
svn.proxy.parent_path_root = /path/to/repo_store
## Used as a prefix to the <Location> block in the generated config file. In
## most cases it should be set to `/`.
svn.proxy.location_root = /

This would create a special template file called `mod_dav_svn.conf`. We used that file path in the apache config above inside the Include statement.

Using |svn|

Once |svn| has been enabled on your instance, you can use it using the following examples. For more |svn| information, see the Subversion Red Book

# To clone a repository
svn checkout http://my-svn-server.example.com/my-svn-repo

# svn commit
svn commit