On Tue, 8 Sept 2026 at 18:55, Nathan Hartman <[email protected]> wrote:
> On Tue, Sep 8, 2026 at 10:52 AM <[email protected]> wrote: > >> Author: lyalyakin >> Date: Tue Sep 8 14:52:19 2026 >> New Revision: 1938011 >> >> Log: >> Remove section III (Building a Subversion server) from INSTALL. >> >> The build-related content of the section has been moved to the dedicated >> Apache HTTP Server entry of the Dependencies in Detail section. The rest >> of >> the content duplicates what's already in SVNBook and has been removed. >> >> * INSTALL >> (Contents): Update the table of contents. >> (II.E): New subsection with a brief summary of the two servers (svnserve >> and httpd). >> (III): Remove. >> (III, IV): Renumber sections IV and V to III and IV. >> (IV.12): Remove the reference to section III.D. >> >> Modified: >> subversion/trunk/INSTALL >> >> Modified: subversion/trunk/INSTALL >> >> ============================================================================== >> --- subversion/trunk/INSTALL Tue Sep 8 14:51:40 2026 (r1938010) >> +++ subversion/trunk/INSTALL Tue Sep 8 14:52:19 2026 (r1938011) >> @@ -18,17 +18,12 @@ Contents: >> B. Building with CMake (Windows and Unix) >> C. Building with vcproj/vcxproj (Windows only, deprecated) >> D. Running the test suite >> + E. Building a Subversion server >> >> - III. BUILDING A SUBVERSION SERVER >> - A. Setting Up Apache Httpd >> - B. Making and Installing the Subversion Apache Server Module >> - C. Configuring Apache Httpd for Subversion >> - D. Running and Testing >> - E. Alternative: 'svnserve' and ra_svn >> + III. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) >> >> - IV. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) >> + IV. DEPENDENCIES IN DETAIL >> >> - V. DEPENDENCIES IN DETAIL >> >> >> >> @@ -420,271 +415,30 @@ II. INSTALLATION >> >> Run the ctests command from the build directory. >> >> - >> -III. BUILDING A SUBVERSION SERVER >> - ============================ >> - >> - Subversion has two servers you can choose from: svnserve and >> - Apache. svnserve is a small, lightweight server program that is >> - automatically compiled when you build Subversion's source. Apache >> - is a more heavyweight HTTP server, but tends to have more features. >> - >> - This section primarily focuses on how to build Apache and the >> - accompanying mod_dav_svn server module for it. If you plan to use >> - svnserve instead, jump right to section E for a quick explanation. >> - >> - >> - A. Setting Up Apache Httpd >> - ----------------------- >> - >> - 1. Obtaining and Installing Apache Httpd 2 >> - >> - Subversion tries to compile against the latest released version >> - of Apache httpd 2.2+. The easiest thing for you to do is download >> - a source tarball of the latest release and unpack that. >> - >> - If you have questions about the Apache httpd 2.2 build, please >> consult >> - the httpd install documentation: >> - >> - https://httpd.apache.org/docs-2.2/install.html >> - >> - At the top of the httpd tree: >> - >> - $ ./buildconf >> - $ ./configure --enable-dav --enable-so --enable-maintainer-mode >> - >> - The first arg says to build mod_dav. >> - >> - The second arg says to enable shared module support which is needed >> - for a typical compile of mod_dav_svn (see below). >> - >> - The third arg says to include debugging information. If you >> - built Subversion with --enable-maintainer-mode, then you should >> - do the same for Apache; there can be problems if one was >> - compiled with debugging and the other without. >> - >> - Note: if you have multiple db versions installed on your system, >> - Apache might link to a different one than Subversion, causing >> - failures when accessing the repository through Apache. To prevent >> - this from happening, you have to tell Apache which db version to >> - use and where to find db. Add --with-dbm=db4 and >> - --with-berkeley-db=/usr/local/BerkeleyDB.4.2 to the configure >> - line. Make sure this is the same db as the one Subversion uses. >> - This note assumes you have installed Berkeley DB 4.2.52 >> - at its default locations. >> - >> - You may also want to include other modules in your build. Add >> - --enable-ssl to turn on SSL support, and --enable-deflate to turn >> on >> - compression support, for example. Consult the Apache documentation >> - for more details. >> - >> - All instructions below assume you configured Apache to install >> - in its default location, /usr/local/apache2/; substitute >> - appropriately if you chose some other location. >> - >> - Compile and install apache: >> - >> - $ make && make install >> - >> - >> - B. Making and Installing the Subversion Apache Server Module >> - --------------------------------------------------------- >> - >> - Go back into your subversion working copy and run ./autogen.sh if >> - you need to. Then, assuming Apache httpd 2.2 is installed in the >> - standard location, run: >> - >> - $ ./configure >> - >> - Note: do *not* configure subversion with "--disable-shared"! >> - mod_dav_svn *must* be built as a shared library, and it will >> - look for other libsvn_*.so libraries on your system. >> - >> - If you see a warning message that the build of mod_dav_svn is >> - being skipped, this may be because you have Apache httpd 2.x >> - installed in a non-standard location. You can use the >> - "--with-apxs=" option to locate the apxs script: >> - >> - $ ./configure --with-apxs=/usr/local/apache2/bin/apxs >> - >> - Note: it *is* possible to build mod_dav_svn as a static library >> - and link it directly into Apache. Possible, but painful. Stick >> - with the shared library for now; if you can't, then ask. >> - >> - $ rm /usr/local/lib/libsvn* >> - >> - If you have old subversion libraries sitting on your system, >> - libtool will link them instead of the `fresh' ones in your tree. >> - Remove them before building subversion. >> - >> - $ make clean && make && make install >> - >> - After the make install, the Subversion shared libraries are in >> - /usr/local/lib/. mod_dav_svn.so should be installed in >> - /usr/local/libexec/ (or elsewhere, such as >> /usr/local/apache2/modules/, >> - if you passed --with-apache-libexecdir to configure). >> - >> - >> - Section II.C explains how to build the server on Windows. >> - >> - >> - C. Configuring Apache Httpd for Subversion >> - --------------------------------------- >> - >> - The following section is an abbreviated version of the >> - information in the Subversion Book >> - (https://svnbook.red-bean.com). Please read chapter 6 for more >> - details. >> - >> - The following assumes you have already created a repository. >> - For documentation on how to do that, see README. >> - >> - The following also assumes that you have modified >> - /usr/local/apache2/conf/httpd.conf to reflect your setup. >> - At a minimum you should look at the User, Group and ServerName >> - directives. Full details on setting up apache can be found at: >> - https://httpd.apache.org/docs-2.2/ >> - >> - First, your httpd.conf needs to load the mod_dav_svn module. >> - If you pass --enable-mod-activation to Subversion's configure, >> - 'make install' target should automatically add this line for you. >> - In any case, if Apache HTTPD gives you an error like "Unknown >> - DAV provider: svn", then you may want to verify that this line >> - exists in your httpd.conf: >> - >> - LoadModule dav_svn_module modules/mod_dav_svn.so >> - >> - NOTE: if you built mod_dav as a dynamic module as well, make sure >> - the above line appears after the one that loads mod_dav.so. >> - >> - Next, add this to the *bottom* of your httpd.conf: >> - >> - <Location /svn/repos> >> - DAV svn >> - SVNPath /absolute/path/to/repository >> - </Location> >> - >> - This will give anyone unrestricted access to the repository. If >> - you want limited access, read or write, you add these lines to >> - the Location block: >> - >> - AuthType Basic >> - AuthName "Subversion repository" >> - AuthUserFile /my/svn/user/passwd/file >> - >> - And: >> - >> - a) For a read/write restricted repository: >> - >> - Require valid-user >> - >> - b) For a write restricted repository: >> - >> - <LimitExcept GET PROPFIND OPTIONS REPORT> >> - Require valid-user >> - </LimitExcept> >> - >> - c) For separate restricted read and write access: >> - >> - AuthGroupFile /my/svn/group/file >> - >> - <LimitExcept GET PROPFIND OPTIONS REPORT> >> - Require group svn_committers >> - </LimitExcept> >> - >> - <Limit GET PROPFIND OPTIONS REPORT> >> - Require group svn_committers >> - Require group svn_readers >> - </Limit> >> - >> - ### FIXME Tutorials section refers to old 2.0 docs >> - These are only a few simple examples. For a complete tutorial >> - on Apache access control, please consider taking a look at the >> - tutorials found under "Security" on the following page: >> - https://httpd.apache.org/docs-2.0/misc/tutorials.html >> - >> - In order for 'svn cp' to work (which is actually implemented as a >> - DAV COPY command), mod_dav needs to be able to determine the >> - hostname of the server. A standard way of doing this is to use >> - Apache's ServerName directive to set the server's hostname. Edit >> - your /usr/local/apache2/conf/httpd.conf to include: >> - >> - ServerName svn.myserver.org >> - >> - If you are using virtual hosting through Apache's NameVirtualHost >> - directive, you may need to use the ServerAlias directive to specify >> - additional names that your server is known by. >> - >> - If you have configured mod_deflate to be in the server, you can >> enable >> - compression support for your repository by adding the following >> line >> - to your Location block: >> - >> - SetOutputFilter DEFLATE >> - >> - >> - NOTE: If you are unfamiliar with an Apache directive, or not >> exactly >> - sure about what it does, don't hesitate to look it up in the >> - documentation: >> https://httpd.apache.org/docs-2.2/mod/directives.html. >> - >> - NOTE: Make sure that the user 'nobody' (or whatever UID the >> - httpd process runs as) has permission to read and write the >> - Berkeley DB files! This is a very common problem. >> - >> - >> - D. Running and Testing >> - ------------------- >> - >> - Fire up apache 2: >> - >> - $ /usr/local/apache2/bin/apachectl stop >> - $ /usr/local/apache2/bin/apachectl start >> - >> - Check /usr/local/apache2/logs/error_log to make sure it started >> - up okay. >> - >> - Try doing a network checkout from the repository: >> - >> - $ svn co http://localhost/svn/repos wc >> - >> - The most common reason this might fail is permission problems >> - reading the repository db files. If the checkout fails, make >> - sure that the httpd process has permission to read and write to >> - the repository. You can see all of mod_dav_svn's complaints in >> - the Apache error logfile, /usr/local/apache2/logs/error_log. >> - >> - To run the regression test suite for networked Subversion, see >> - the instructions in subversion/tests/cmdline/README. >> - For advice about tracing problems, see "Debugging the server" in >> - https://subversion.apache.org/docs/community-guide/. >> >> + E. Building a Subversion server >> + ---------------------------- >> >> - E. Alternative: 'svnserve' and ra_svn >> - ----------------------------------- >> + Subversion has two servers you can choose from, svnserve and >> + Apache HTTP Server (httpd): >> >> - An alternative network layer is libsvn_ra_svn (on the client >> - side) and the 'svnserve' process on the server. This is a >> - simple network layer that speaks a custom protocol over plain >> - TCP (documented in libsvn_ra_svn/protocol): >> + - svnserve is a small, lightweight server program that makes >> Subversion >> + repositories available to clients over a custom protocol. The >> svnserve >> + server is automatically compiled when you build Subversion's >> source. >> >> - $ svnserve -d # becomes a background daemon >> - $ svn checkout svn://localhost/usr/local/svn/repository >> + - Apache HTTP Server is a "heavy-duty" server for which the >> Subversion >> + project provides the mod_dav_svn and mod_authz_svn modules. >> Please >> + refer to section IV.11 below for more information. >> >> - You can use the "-r" option to svnserve to set a logical root >> - for repositories, and the "-R" option to restrict connections to >> - read-only access. ("Read-only" is a logical term here; svnserve >> - still needs write access to the database in this mode, but will >> - not allow commits or revprop changes.) >> + SVNBook provides an overview of the server options as well as the >> steps >> + necessary to configure these servers in 'Chapter 6. Server >> + Configuration': >> >> - 'svnserve' has built-in CRAM-MD5 authentication (so you can use >> - non-system accounts), and can also be tunneled over SSH (so you >> - can use existing system accounts). It's also capable of using >> - Cyrus SASL if libsasl2 is detected at ./configure time. Please >> - read chapter 6 in the Subversion Book >> - (https://svnbook.red-bean.com) for details on these features. >> + https://svnbook.red-bean.com/en/1.8/svn.serverconfig.html >> >> >> >> -IV. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) >> +III. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) >> ======================================================== >> >> For Python, Perl and Ruby bindings, see the file >> @@ -697,7 +451,7 @@ IV. PROGRAMMING LANGUAGE BINDINGS (PYT >> >> >> >> -V. DEPENDENCIES IN DETAIL >> +IV. DEPENDENCIES IN DETAIL >> ====================== >> >> Subversion depends on a number of third party tools and libraries. >> @@ -986,7 +740,6 @@ V. DEPENDENCIES IN DETAIL >> Subversion's own repository (whether or not running the test >> suite). >> * Build the SWIG Python bindings. >> - * Testing as described in section III.D. >> >> The Python bindings are used by: >> >> >> > The only comment I have about this change is that there are two possible > servers: httpd is one of them; svnserve is the other. I think we should > still document how to build a svnserve server (because it is the simpler of > the two and adequate for many workloads). With the removal of this section, > that might not be clear anymore. > > (Admittedly I haven't done a full read-through of INSTALL recently because > I have been waiting for the dust to settle, so apologies in advance if I > missed that this is documented already.) > As far as I can tell, building `svnserve` is quite simple and all build systems build it by default. So it's basically just 1) Build SVN, 2) Follow the steps from SVNBook to set up your `svnserve`-based server. As of r1938011, there is a summary of the two servers[1] with a link to SVNBook[2], which has more information on configuring the servers. I've added this summary so that both httpd and svnserve receive a visible mention side by side in the INSTALL guide. Perhaps we can strengthen the point that `svnserve` is quite simple to configure and is adequate for many usage scenarios, but right now I'm unsure what else to include in the scope of "building svnserve" -- unlike with the httpd modules, where extra steps are required, building svnserve just works. The rest is "post-build configuration" that's already covered in SVNBook. [1]: https://svn.apache.org/viewvc/subversion/trunk/INSTALL?revision=1938011&view=markup#l419 [2]: https://svnbook.red-bean.com/en/1.8/svn.serverconfig.html -- With best regards, Pavel Lyalyakin

