Note: Much of this is taken from the great blog entry at http://turnleft.inetsolution.com/2007/07/how_to_setup_subversion_apache_1.html, but with an XAMPP slant, so apologies for any repetition here.
No time?, read on:
1) Get and install XAMPP 1.6.3a as it comes with Apache 2.2.x. This is big enough to be the topic of a separate thread. But you shouldn't go far wrong if you follow the guide at http://www.apachefriends.org/en/xampp-windows.html.
2) Augment the XAMPP version of apache 2.2 with the Subversion specific libraries needed, available in the file svn-win32-1.4.6.zip you can get at http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&expandFolder=91&folderID=74. Do the following:
a) Stop apache from your XAMPP control panel
b) XAMPP has invalid pre-provided files mod_dav_svn.so and mod_authz_svn.so modules in xampp\apache\modules, replace them with the correct ones you'll find in the zip.
c) XAMPP may come with invalid DLL for svn. Just in case, replace xampp\apache\bin\libdb44.dll and xampp\apache\bin\int13_svn.dll with the ones you'll find in the zip.
3) Now, configure your repository for web access via Apache.
a) Edit C:\xampp\apache\conf\httpd.conf and add:
b) Create http-subversion.conf in the extra subdirectory.
c) Populate it with details of your repository, and ensure the amended modules get loaded:
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dav_svn_module modules/mod_dav_svn.so
allow from all
4) Create the common web access password file for the repositories, and add a user.
<path_to_htpasswd_under_xampp> -cb <path_to_svn_root_directory_less_drive_handle> <username> <password>
c:\xampp\apache\bin\htpasswd -cb \svn\passwords whoever weRst194UUd
5) Check how we are doing by viewing the repositories over webDAV, by starting Apache again from the XAMPP control panel, and view the repository at http://localhost/svn/<repository_name>. You will now need to use the user name and password to access your repository.
Note: So we are talking two password files, one under C:\<svn_root>\<repository_name>\conf\passwd for configuring SVN repository users who do checkouts etc etc on a particular repository, and one for all the online users who can browse repositories in C:\<svn_root>\passwords via using htpasswd generation above.
6) But wait, what about the pretty-up bit you promised? For this you'll need to stop using straight webDAV to display your repositories as its ugly.
a) Note the "extra" stuff we added to the httpd-subversion.conf:-
allow from all
This is for our choice of repository web front end, WebSVN 2.0.
b) Ensure XAMPP Apache has the full PHP support needed for our choice of repository web front end.
i) You can get PHP from http://www.php.net/downloads.php, go for the 5.2.6 windows installer, as its got the fixes missing in the build a few days earlier.
ii) During install, select the Apache 2.2.x Module that allows the installer to update your httpd.conf file for XAMPP with the appropriate settings.
c) Download the most recent ZIP package of WebSVN 2.0 from http://websvn.tigris.org/servlets/ProjectDocumentList. Unpack the files into xampp\htdocs and rename to websvn
d) Finish the job by configuring WebSVN. Rename xampp\htdocs\websvn\include\distconfig.inc to config.inc, and tell WebSVN its dealing with a windows host, and where the original svn "root" location under which all your repositories live happens to be, so uncomment and amend the entries:
e) Restart Apache, and you should now be able to access http://localhost/websvn to see all the repositories under your svn root using the nice display from the WebSVN people.