Click here to Skip to main content
15,881,248 members
Articles / Web Development / Apache
Article

How to set up Subversion with Apache in Windows (quick reference)

Rate me:
Please Sign up or sign in to vote.
3.88/5 (13 votes)
6 Oct 2006CPOL3 min read 235.9K   51   32
Quick user guide to those who do not have time to learn how to set up Subversion with Apache.

Introduction

I decided to write this article in order to save time to those people who must install and set up Subversion on Windows machines, having no idea of how to do that and no time to search for any piece of information on the internet.

It took two days for me and enormous efforts to understand what is going on with Subversion and how to make it work. I asked my friend who is working on a parallel project in the Computer Science department of my university how much time he spent setting up SVN with Apache on their Linux server. He told it took him one month!!! :) Well, no comments.

Let's get down to business, we don't have much time.

Prerequisites

First of all, we need to download SVN and Apache.

Subversion

Install Subversion to any directory, then add the bin sub-directory to the environment path. For example: if we installed svn into C:\programs\programming\svn-win32-1.4.0, then go to Start -> Settings -> Control Panel -> System.

Click on the Advanced tab and choose Environment Variables.

subversion_apache_system_properties.jpg

subversion_apache_environment_variables.jpg

subversion_apache_path.jpg

The next step is to create a directory which will be a root for all the repositories of our source control.

  • Open the command prompt.
  • Let's say that we want our root directory be named as c:\svnroot. Then, create this directory either in command prompt or using Explorer.
  • Create repositories in the svn root directories using the following commands:
    • svnadmin create c:\svnroot\test1
    • svnadmin create c:\svnroot\test2

    subversion_apache_repo_create.jpg

Apache server

Now, we can install the Apache server.

When the installation is finished, go to the bin directory within the Subversion installation, find two files with extension *.so, and put them into the (Apache)/modules directory. The files are mod_authz_svn.so and mod_dav_svn.so.

Go to the conf sub-directory within the Apache installation directory and open the httpd.conf file in any text editor.

Add the following lines:

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

After that, add the following block:

<Location /svn/>
    DAV svn
    SVNParentPath c:/svnroot/ #specify the root for repositories
    #http://www.archivesat.com/CVS_developers_help/thread45479.htm 
        post which discuss why you need to specify /svn/ and not /svn
    
    #list repositories
    SVNListParentPath on 
    # our access control policy
    AuthzSVNAccessFile bin/apachesvnauth #authentication file 
                   #path where policy is written for each user   

    AuthType Basic #type of authentication
    AuthName "Subversion repository" #the name of the authentication 
                                      #and the name of repository realm
    AuthUserFile bin/apachesvnpasswd #the name of the 
                                      #file with user passwords values
    Require valid-user #permit to log-in only for authorized users
</Location>
  • <Location /svn/> - if you type in your browser something like this: http://localhost:8080/svn/, then Apache will know how to find your root repository using SVNParentPath.
  • SVNParentPath c:/svnroot/ - specify the root for the repositories.
  • SVNListParentPath on - permit to see the list of repositories using http://localhost:8080/svn/.
  • AuthzSVNAccessFile bin/apachesvnauth - authentication file path where the policy is provided for each user. The file is stored in the bin sub-directory of Apache.
  • AuthType Basic - the type of authentication.
  • AuthName "Subversion repository" - the name of the authentication and the name of the repository realm.
  • AuthUserFile bin/apachesvnpasswd - the name of the file with user password values, stored in the bin subdirectory of the Apache installation.
  • Require valid-user - permit to log-in only for authorized users.

Building the password file

We use the AuthUserFile bin/apachesvnpasswd entry, which tells Apache to find the file with passwords in the bin sub-directory within the Apache installation directory. We need to build this file. Go to that directory using the command prompt and type the following command:

htpasswd.exe -c apachesvnpasswd user1

You will be prompted to enter the password for user user1, and the file apachesvnpasswd will be created in the bin sub-directory. In order to add another user, just type the same command without -c and provide the name of another user.

htpasswd.exe -c apachesvnpasswd user2

Note: only the users we created will be able to log into our repositories because we used the Require valid-user parameter.

Building the authentication file

The following block is an example of the authentication file:

[/] * = r [test1:/] user1 = rw user2 = [test2:/] user1 = r user2 = rw

Explanations

  • [/] * = r - gives access to everyone to read all the repositories
  • [test1:/] - gives read and write permissions to user1 for repository test1, and user2 can not read or write
  • [test2:/] - user1 can read from repository test2, and user2 has full access rights

Run Apache

Theoretically, we are at the stage when we can run Apache and test our Subversion. So start Apache, open the web browser and write something like this: http://localhost:8080/svn/.

If you don't get any errors, you will be prompted to type the username and password.

subversion_apache_username.jpg

Provide the username you created and the password, and press OK. You will see the following page:

subversion_apache_repo_list.jpg

References

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionApache Subversion Pin
helloworld20209-Oct-12 5:25
helloworld20209-Oct-12 5:25 
QuestionBeginners badluck Pin
kiranvk2728-Jul-10 23:58
kiranvk2728-Jul-10 23:58 
GeneralI have another solution Pin
Ethan Woo14-Apr-10 17:08
Ethan Woo14-Apr-10 17:08 
GeneralRe: I have another solution Pin
Alex Manolescu13-Apr-11 9:55
Alex Manolescu13-Apr-11 9:55 
Generalcannot list repositories or files! Pin
w00078782k3-Jul-09 8:14
w00078782k3-Jul-09 8:14 
GeneralRegarding the block Pin
mpacaon29-Oct-08 20:23
mpacaon29-Oct-08 20:23 
GeneralRe: Regarding the block Pin
Kisilevich Slava29-Oct-08 22:51
Kisilevich Slava29-Oct-08 22:51 
GeneralRe: Regarding the block Pin
mpacaon2-Nov-08 15:02
mpacaon2-Nov-08 15:02 
QuestionConfused in doing the "Building the authentication file" step Pin
mpacaon28-Oct-08 18:36
mpacaon28-Oct-08 18:36 
AnswerRe: Confused in doing the "Building the authentication file" step Pin
Kisilevich Slava29-Oct-08 2:05
Kisilevich Slava29-Oct-08 2:05 
GeneralRe: Confused in doing the "Building the authentication file" step Pin
mpacaon29-Oct-08 20:18
mpacaon29-Oct-08 20:18 
QuestionWeird authentication issue, but only using Tortoise Pin
Regalarius9-Jul-08 19:47
Regalarius9-Jul-08 19:47 
AnswerRe: Weird authentication issue, but only using Tortoise Pin
Kisilevich Slava9-Jul-08 20:16
Kisilevich Slava9-Jul-08 20:16 
GeneralComments on same lines as config causes Apache to fail to start Pin
Troy Simpson1-May-08 19:33
Troy Simpson1-May-08 19:33 
GeneralRe: Comments on same lines as config causes Apache to fail to start Pin
Kisilevich Slava1-May-08 19:40
Kisilevich Slava1-May-08 19:40 
GeneralSubversion is showing too much Pin
niemkhuccuoi07011-Jun-07 16:46
niemkhuccuoi07011-Jun-07 16:46 
GeneralRe: Subversion is showing too much Pin
Kisilevich Slava1-Jun-07 21:11
Kisilevich Slava1-Jun-07 21:11 
GeneralRe: Subversion is showing too much Pin
niemkhuccuoi07014-Jun-07 7:32
niemkhuccuoi07014-Jun-07 7:32 
GeneralRe: Subversion is showing too much Pin
Kisilevich Slava4-Jun-07 9:39
Kisilevich Slava4-Jun-07 9:39 
GeneralRe: Subversion is showing too much Pin
stanhughes13-Jun-07 9:55
stanhughes13-Jun-07 9:55 
GeneralRe: Subversion is showing too much Pin
VanbrabantP31-Oct-07 2:42
VanbrabantP31-Oct-07 2:42 
Generalmod_authz_svn error Pin
Dmitry.S.Golub26-Sep-06 21:31
Dmitry.S.Golub26-Sep-06 21:31 
GeneralRe: mod_authz_svn error Pin
Kisilevich Slava26-Sep-06 23:22
Kisilevich Slava26-Sep-06 23:22 
GeneralRe: mod_authz_svn error Pin
Dmitry.S.Golub27-Sep-06 20:21
Dmitry.S.Golub27-Sep-06 20:21 
GeneralRe: mod_authz_svn error Pin
tlv779-Oct-06 7:29
tlv779-Oct-06 7:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.