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

Reply via email to