This guide will show you how to install a Subversion (SVN) server with Uniform Server. This guide assumes that you have a clean installation of Uniform Server running currently and do not have another version of Apache installed on your PC.
- Download the latest Win32 SVN binaries from here. This guide uses the .exe Installer provided there.
- After installing / unpacking it, copy the contents of its httpd folder (usually C:\Program Files\Subversion\httpd) into Apache's module directory (Uniform Server's default is W:\usr\local\Apache2\modules)
- Copy libdb42.dll from the bin folder into the same module directory.
Apache Module Configuration
- Edit Apache's configuration files (W:\usr\local\Apache2\conf\httpd.conf) and uncomment (remove the # from) this line if it is commented: <pre>LoadModule dav_module modules/mod_dav.so</pre>
- Next find: <pre>LoadModule dav_fs_module modules/mod_dav_fs.so</pre> and add this below it: <pre><nowiki>LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so</nowiki></pre>
- Create an empty folder (I used W:\svn), which will used as repository root.
- Create another empty folder (for example W:\svn\test) in your repository root.
- Open the Command Prompt (or MS-DOS Prompt in Win 9x), cd into your repository root. Execute:<pre>svnadmin create --fs-type bdb test</pre>or<pre>svnadmin create --fs-type fsfs test</pre> Note: test is the folder you created (under your repository root) earlier in Step #2; for more info on which fs-type to choose, read Chapter 5, Repository Data-Stores in the SVN book for more information
Integrating Apache + SVN
First, you should add this anywhere in your configuration file (preferably between "<IfModule mod_dav.c>" and "</IfModule>"): <pre><nowiki><Location /svn>
Dav svn SVNParentPath /svn AuthType Basic AuthName "Subversion Repositories" AuthUserFile /htpasswd/svn/.htpasswd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>
</Location></nowiki></pre> Note #1: If you do not want your repository to have read access for everyone (even those who do not have the password) remove the <LimitExcept> Note #2: /svn is the path to your repository root, if you used any drive other than what Apache is on (Uniform Server default = W:\) for your repository root, you'll have to put the drive letter in front of the / (for example, C:\SVN becomes C:/SVN) Next, create the .htpasswd file which will store the username & password needed to modify your repositories. Open the Command Prompt again, cd into Apache's bin directory (W:\usr\local\Apache2\bin). Execute:<pre>htpasswd -c .htpasswd <username></pre> To add more usernames & passwords, execute:<pre><nowiki>htpasswd .htpasswd <username></nowiki></pre> Note: Replace <nowiki><username></nowiki> with the username of your choice. For more advanced configurations (not needed by many) view Setting Up an SVN Server.
- If you are using version 3.3, please skip to step 4.
- Create a "htpasswd" directory in the W:/ drive if you are using version 3.2 or less.
- Create a "svn" directory under the "htpasswd" directory.
- Copy the .htpasswd file into the "svn" directory.
- Now, the time you've all been for. Restart Uniform Server.
- Point your browser to http://localhost/svn/test (where test is the name of the repository you created earlier)
- If you do not understand how to make the .htpasswd file, you can just make the file and edit it with the contents "username:password" in the file.
NEW Installing SVN on 4.3-Mona
The following assumes you installed US to C:\UniServer_4_3\UniServer.
If you installed to another location substitute paths accordingly.
How to install SVN
|1)||Run servers and check they function.||Just a quick check, close servers after testing.|
|2)||Inside folder C:\UniServer_4_3\UniServer\udrive create two new folders svn_tools and svn <br />
C:\UniServer_4_3\UniServer\udrive\svn_tools<br /> C:\UniServer_4_3\UniServer\udrive\svn
|You can choose different names and locate these outside of the UniServer folder.<br />However we are placing these here for portability.<br /> Folder svn will contain your SVN repositories.|
|3)||Download File: svn-win32-1.6.3.zip or newer.<br />
Located at the bottom of this page: tigris.org<br /> Extract to any folder
|Make sure any newer version is compatible with the version of Apache.|
|4)||Copy the entire content of folder svn-win32-1.6.3\svn-win32-1.6.3<br />
To folder C:\UniServer_4_3\UniServer\udrive\svn_tools<br /> Folder svn_tools will now contain folders bin, iconv, licenses,<br /> share and file README.txt
|Once copied if you wish to save space delete the extracted files<br /> and svn-win32-1.6.3.zip they are no longer required.|
|5)||Navigate to C:\UniServer_4_3\UniServer\udrive\svn_tools\bin<br />
Move files: mod_authz_svn.so and mod_dav_svn.so<br /> To folder: C:\UniServer_4_3\UniServer\udrive\usr\local\apache2\modules
|Move the two modules to Apache's module folder;|
|6)||Navigate to C:\UniServer_4_3\UniServer\udrive\svn_tools\bin<br />
Copy these files:
|The above two modules have dependencies (dlls),<br />
Apache resolves dependences by first looking in<br /> its bin folder and then looks along system paths.<br />
|7)||Edit file: C:\UniServer_4_3\UniServer\udrive\usr\local\apache2\conf\httpd.conf<br />
Confirm these modules are enabled as shown: <pre> LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so </pre>
|Configure Apache to use the subversion module.<br />
First check these modules are enabled.<br /> Note, mod_dav.so is enabled by default.<br />
|8)||At the end of load modules section add these two lines:
<pre> LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so </pre>
|The two lines inform Apache to load the svn modules.<br />Add them just below:<br />LoadModule vhost_alias_module modules/mod_vhost_alias.so|
|9)||At the end of httpd.conf, add the following block of code.
<pre> <location /svn>
DAV svn SVNListParentPath on SVNParentPath C:/UniServer_4_3/UniServer/udrive/svn
Testing SVN server
- Restart Servers
- Access the SVN repository. Type the following into a browser <nowiki>http://localhost/svn</nowiki>
Page displays <pre> Collection of Repositories page Powered by Subversion version 1.6.3 (r38063). </pre> This confirms Apache has been configured correctly. Next step is to create an SVN repository.
Creating a repository - Command line
To create a repository use the command line tool svnadmin.exe
This section shows how to create a repository using this tool and how to add a working project.
The admin tools requires opening a command prompt and navigating to the svn_tools executables folder .
This I find very tedious hence create the following batch file in folder C:\UniServer_4_3\UniServer\udrive\svn_tools\bin
Name the batch file whatever you like I have named it z_start_svn_command_prompt.bat add the following content: <pre> start "SVN COMMAND PROMPT" cmd.exe /k "COLOR B0" </pre> Double click to run, a new command prompt is opened and the working folder is automatically set.
Create a repository
You need to create at least one blank repository choose a name that matches your project for this example I will use “myproject”
Run the batch file above and type the following command: <pre> svnadmin.exe create ..\..\svn\myproject </pre>
- svnadmin.exe Runs the subversion administration program.
- create Is the command to be run by svn admin. It creates a repository named myproject.
- Note: You can specify an absolute path or a relative path to the folder myproject.<br />For example:<br />Absolute: C:\UniServer_4_3\UniServer\udrive\svn\myproject<br />Relative: ..\..\svn\myproject - as shown above
- If the folder myproject does not exist it is created. Adds subversion database and tracking folders.
Start the servers. To access repositories type either of the following into a browser:
- <nowiki>http://localhost/svn/</nowiki> -- Displays Collection of Repositories page.
- All repositories in folder svn are listed as links.
- Currently we have just one repository hence a single link “myproject” is displayed
- Click this link to display “myproject” repository.
- If you do not want all repositories listed comment this line as shown: #SVNListParentPath on<br />Accessing <nowiki>http://localhost/svn/</nowiki> will now produce Forbidden You don't have permission to access /svn/ on this server.
- You can still access a repository by entering its full URL see below.<br />
- <nowiki>http://localhost/svn/myproject/</nowiki> -- You directly access a repository by name as shown for "“myproject”. <br />Viewing this repository with a browser you will find it empty.<br /> However view the same folder using Windows Explorer displays several SVN suport folders and files.
- Folders: conf, dav, db, hooks and locks
- Files: README.txt and format
- Never edit or delete the above folders or files. They tag and track all changes in a repository.
SVN comes complete with several other command line tools including a command line client.
Command line client
Starting with an empty repository you probably want to quickly set it up and publish your current project as it stands.
The following shows a quick way to do this it also includes SVN’s recommended folder structure.
- Create a temporary folder for example C:\a_svn_temp
- Inside this create three new folders (SVN recommended) named:
- Copy your current stable project into folder trunk -- Note: For testing I copied folder C:\UniServer_4_3\UniServer\udrive\plugins
- Start servers
- Run batch file z_start_svn_command_prompt.bat (whatever you named it)
- Type the following:
<pre> svn.exe import C:\a_svn_temp http://localhost/svn/myproject -m "Initial import" </pre> This updates your repository with new folder structure and project.
View repository, type into browser <nowiki>http://localhost/svn/myproject</nowiki>
- The project page and status are displayed myproject - Revision 1:
Note: If you do not include -m "Some text" SVN will complain about not being able to find a text editor.