summaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorJames McCoy <jamessan@debian.org>2018-07-31 22:26:52 -0400
committerJames McCoy <jamessan@debian.org>2018-07-31 22:26:52 -0400
commite20a507113ff1126aeb4a97b806390ea377fe292 (patch)
tree0260b3a40387d7f994fbadaf22f1e9d3c080b09f /INSTALL
parentc64debffb81d2fa17e9a72af7199ccf88b3cc556 (diff)
New upstream version 1.10.2
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL1373
1 files changed, 1373 insertions, 0 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..dcbf67c
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,1373 @@
+ ======================================
+ INSTALLING SUBVERSION
+ A Quick Guide
+ ======================================
+
+$LastChangedDate: 2017-12-25 04:00:08 +0000 (Mon, 25 Dec 2017) $
+
+
+Contents:
+
+ I. INTRODUCTION
+ A. Audience
+ B. Dependency Overview
+ C. Dependencies in Detail
+ D. Documentation
+
+ II. INSTALLATION
+ A. Building from a Tarball
+ B. Building the Latest Source under Unix
+ C. Building under Unix in Different Directories
+ D. Installing from a Zip or Installer File under Windows
+ E. Building the Latest Source under Windows
+
+ III. BUILDING A SUBVERSION SERVER
+ A. Setting Up Apache Httpd
+ B. Making and Installing the Subversion Server
+ C. Configuring Apache for Subversion
+ D. Running and Testing
+ E. Alternative: 'svnserve' and ra_svn
+
+ IV. PLATFORM-SPECIFIC ISSUES
+ A. Windows XP
+ B. Mac OS X
+
+ V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
+
+
+
+I. INTRODUCTION
+ ============
+
+ A. Audience
+
+ This document is written for people who intend to build
+ Subversion from source code. Normally, the only people who do
+ this are Subversion developers and package maintainers.
+
+ If neither of these labels fits you, we recommend you find an
+ appropriate binary package of Subversion and install that.
+ While the Subversion project doesn't officially release binary
+ packages, a number of volunteers have made such packages
+ available for different operating systems. Most Linux and BSD
+ distributions already have Subversion packages ready to go via
+ standard packaging channels, and other volunteers have built
+ 'installers' for both Windows and OS X. Visit this page for
+ package links:
+
+ https://subversion.apache.org/packages.html
+
+ For those of you who still wish to build from source, Subversion
+ follows the Unix convention of "./configure && make", but it has
+ a number of dependencies.
+
+
+ B. Dependency Overview
+
+ You'll need the following build tools to compile Subversion:
+
+ * autoconf 2.59 or later (Unix only)
+ * libtool 1.4 or later (Unix only)
+ * a reasonable C compiler (gcc, Visual Studio, etc.)
+
+
+ Subversion also depends on the following third-party libraries:
+
+ * libapr and libapr-util (REQUIRED for client and server)
+
+ The Apache Portable Runtime (APR) library provides an
+ abstraction of operating-system level services such as file
+ and network I/O, memory management, and so on. It also
+ provides convenience routines for things like hashtables,
+ checksums, and argument processing. While it was originally
+ developed for the Apache HTTP server, APR is a standalone
+ library used by Subversion and other products. It is a
+ critical dependency for all of Subversion; it's the layer
+ that allows Subversion clients and servers to run on
+ different operating systems.
+
+ * SQLite (REQUIRED for client and server)
+
+ Subversion uses SQLite to manage some internal databases.
+
+ * libz (REQUIRED for client and server)
+
+ Subversion uses zlib for compressing binary differences.
+ These diff streams are used everywhere -- over the network,
+ in the repository, and in the client's working copy.
+
+ * Apache Serf (OPTIONAL for client)
+
+ The Apache Serf library allows the Subversion client to send HTTP
+ requests. This is necessary if you want your client to access
+ a repository served by the Apache HTTP server. There is an
+ alternate 'svnserve' server as well, though, and clients
+ automatically know how to speak the svnserve protocol.
+ Thus it's not strictly necessary for your client to be able
+ to speak HTTP... though we still recommend that your client
+ be built to speak both HTTP and svnserve protocols.
+
+ * OpenSSL (OPTIONAL for client and server)
+
+ OpenSSL enables your client to access SSL-encrypted https://
+ URLs (using Apache Serf) in addition to unencrypted http:// URLs.
+ To use SSL with Subversion's WebDAV server, Apache needs to be
+ compiled with OpenSSL as well.
+
+ * Netwide Assembler (OPTIONAL for client and server)
+
+ The Netwide Assembler (NASM) is used to build the (optionally)
+ assembler modules of OpenSSL. As of OpenSSL 1.1.0 NASM is the
+ only supported assembler.
+
+ * Berkeley DB (OPTIONAL for client and server)
+
+ There are two different repository 'back-end'
+ implementations. One implementation stores data in a flat
+ filesystem (known as FSFS); the other implementation stores
+ data in a Berkeley DB database (known as BDB). When you
+ create a repository, you have the option of specifying a
+ storage back-end. The Berkeley DB back-end will only be
+ available if the BDB libraries are discovered at compile
+ time. The Berkeley DB back-end has been deprecated and
+ is not recommend.
+
+ * libsasl (OPTIONAL for client and server)
+
+ If the Cyrus SASL library is detected at compile time, then
+ the svn client (and svnserve server) will be able to utilize
+ SASL to do various forms of authentication when speaking the
+ svnserve protocol.
+
+ * Python, Perl, Java, Ruby (OPTIONAL)
+
+ Subversion is mostly a collection of C libraries with
+ well-defined APIs, with a small collection of programs that
+ use the APIs. If you want to build Subversion API bindings
+ for other languages, you need to have those languages
+ available at build time.
+
+ * KDELibs, GNOME Keyring (OPTIONAL for client)
+
+ Subversion contains optional support for storing passwords in
+ KWallet (KDE 4) or GNOME Keyring.
+
+ * libmagic (OPTIONAL)
+
+ If the libmagic library is detected at compile time,
+ it will be used to determine mime-types of binary files
+ which are added to version control. Note that mime-types
+ configured via auto-props or the mime-types-file option
+ take precedence.
+
+ * Googlemock aka Gmock (OPTIONAL)
+
+ This optional package is used by the tests for Subversions'
+ C++ bindings.
+
+
+ C. Dependencies in Detail
+
+ Subversion depends on a number of third party tools and libraries.
+ Some of them are only required to run a Subversion server; others
+ are necessary just for a Subversion client. This section explains
+ what other tools and libraries will be required so that Subversion
+ can be built with the set of features you want.
+
+ On Unix systems, the './configure' script will tell you if you are
+ missing the correct version of any of the required libraries or
+ tools, so if you are in a real hurry to get building, you can skip
+ straight to section II. If you want to gather the pieces you will
+ need before starting out, however, you should read the following.
+
+ If you're just installing a Subversion client, the Subversion
+ team has created a script that downloads the minimal prerequisite
+ libraries (Apache Portable Runtime, Sqlite, and Zlib). The script,
+ 'get-deps.sh', is available in the same directory as this file.
+ When run, it will place 'apr', 'apr-util', 'serf', 'zlib', and
+ 'sqlite-amalgamation' directories directly into your unpacked Subversion
+ distribution. With the exception of sqlite-amalgamation, they will
+ still need to be configured, built and installed explicitly, and
+ Subversion's own configure script may need to be told where to find
+ them, if they were not installed in standard system locations.
+
+ Note: there are optional dependencies (such as OpenSSL, swig, and httpd)
+ which get-deps.sh does not download.
+
+ Note: Because previous builds of Subversion may have installed older
+ versions of these libraries, you may want to run some of the cleanup
+ commands described in section II.B before installing the following.
+
+
+ 1. Apache Portable Runtime 1.3 or newer (REQUIRED)
+
+ Whenever you want to build any part of Subversion, you need the
+ Apache Portable Runtime (APR) and the APR Utility (APR-util)
+ libraries.
+
+ If you do not have a pre-installed APR and APR-util, you will need
+ to get these yourself:
+
+ https://apr.apache.org/download.cgi
+
+ On Unix systems, if you already have the APR libraries compiled and do
+ not wish to regenerate them from source code, then Subversion needs to
+ be able to find them.
+
+ There are a couple of options to "./configure" that tell it where
+ to look for the APR and APR-util libraries. By default it will try
+ to locate the libraries using apr-config and apu-config scripts.
+ These scripts provide all the relevant information for the APR and
+ APR-util installations.
+
+ If you want to specify the location of the APR library, you can use
+ the "--with-apr=" option of "./configure". It should be able to find
+ the apr-config script in the standard location under that directory
+ (e.g. ${prefix}/bin).
+
+ Similarly, you can specify the location of APR-util using the
+ "--with-apr-util=" option to "./configure". It will look for the
+ apu-config script relative to that directory.
+
+ For example, if you want to use the APR libraries you built
+ with the Apache httpd server, you could run:
+
+ $ ./configure --with-apr=/usr/local/apache2 \
+ --with-apr-util=/usr/local/apache2 ...
+
+ Be sure to use a native Windows SVN client (as opposed to
+ Cygwin's version) so that the .dsp files get carriage-returns at
+ the ends of their lines. Otherwise Visual Studio will complain
+ that it doesn't recognize the .dsp files.
+
+ If you use APR libraries checked out from svn in an Unix
+ environment, you need to run the 'buildconf' script in each
+ library's directory, to regenerate the configure scripts and
+ other files required for compiling the libraries:
+
+ $ cd apr; ./buildconf; ./configure ...; make; make install; cd ..
+
+ $ cd apr-util; ./buildconf; ./configure ...; make; make install; cd ..
+
+ Configure build and install both libraries before running Subversion's
+ configure script.
+
+
+ 2. Zlib (REQUIRED)
+
+ Subversion's binary-differencing engine depends on zlib for
+ compression. Most Unix systems have libz pre-installed, but
+ if you need it, you can get it from
+
+ http://www.zlib.net/
+
+
+ 3. autoconf 2.59 or newer (Unix only)
+
+ This is required only if you plan to build from the latest source
+ (see section II.B). Generally only developers would be doing this.
+
+
+ 4. libtool 1.4 or newer (Unix only)
+
+ This is required only if you plan to build from the latest source
+ (see section II.B).
+
+ Note: Some systems (Solaris, for example) require libtool 1.4.3 or
+ newer. The autogen.sh script knows about that.
+
+
+ 5. Apache Serf library 1.3.4 or newer (OPTIONAL)
+
+ If you want your client to be able to speak to an Apache
+ server (via a http:// or https:// URL), you must link against
+ Apache Serf. Though optional, we strongly recommend this.
+
+ In order to use ra_serf, you must install serf, and run Subversion's
+ ./configure with the argument --with-serf. If serf is installed in a
+ non-standard place, you should use
+
+ --with-serf=/path/to/serf/install
+
+ instead.
+
+ Apache Serf can be obtained via your system's package distribution
+ system or directly from http://code.google.com/p/serf/.
+
+ For more information on Apache Serf and Subversion's ra_serf, see the
+ file subversion/libsvn_ra_serf/README.
+
+ 6. OpenSSL (OPTIONAL)
+
+ ### needs some updates. I think Apache Serf automagically handles
+ ### finding OpenSSL, but we may need more docco here. and w.r.t
+ ### zlib.
+
+ The Apache Serf library has support for SSL encryption by relying on the
+ OpenSSL library.
+
+ a. Using OpenSSL on the client through Apache Serf
+
+ On Unix systems, to build Apache Serf with OpenSSL, you need OpenSSL
+ installed on your system, and you must add "--with-ssl" as a
+ "./configure" parameter. If your OpenSSL installation is hard
+ for Apache Serf to find, you may need to use
+ "--with-libs=/path/to/lib" in addition. In particular, on Red Hat
+ (but not Fedora Core) it is necessary to specify
+ "--with-libs=/usr/kerberos" for OpenSSL to be found. You can also
+ specify a path to the zlib library using "--with-libs".
+
+ Under Windows, you can specify the paths to these libraries by
+ passing the options --with-zlib and --with-openssl to gen-make.py.
+
+ b. Using OpenSSL on the Apache server
+
+ You can also add support for these features to an Apache httpd
+ server to be used for Subversion using the same support libraries.
+ The Subversion build system will not provide them, however. You
+ add them by specifying parameters to the "./configure" script of
+ the Apache Server instead.
+
+ For getting SSL on your server, you would add the "--enable-ssl"
+ or "--with-ssl=/path/to/lib" option to Apache's "./configure"
+ script. Apache enables zlib support by default, but you can
+ specify a nonstandard location for the library with the
+ "--with-z=/path/to/dir" option. Consult the Apache documentation
+ for more details, and for other modules you may wish to install
+ to enhance your Subversion server.
+
+ If you don't already have it, you can get a copy of OpenSSL,
+ including instructions for building and packaging on both Unix
+ systems and Windows, at:
+
+ https://www.openssl.org/
+
+
+ 7. Berkeley DB 4.X (OPTIONAL)
+
+ Berkeley DB is needed to build a Subversion server that supports
+ the BDB repository filesystem, or to access a BDB repository on
+ local disk. If you will only use the FSFS repository filesystem,
+ or if you are building a Subversion client that will only speak
+ to remote (networked) repositories, you don't need it.
+
+ The current recommended version is 4.4.20 or newer, which brings
+ auto-recovery functionality to the Berkeley DB database
+ environment.
+
+ If you must use an older version of Berkeley DB, we *strongly*
+ recommend using 4.3 or 4.2 over the 4.1 or 4.0 versions. Not
+ only are these significantly faster and more stable, but they
+ also enable Subversion repositories to automatically clean up
+ database journal files to save disk space.
+
+ You'll need Berkeley DB installed on your system. You can
+ get it from:
+
+ http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html
+
+ If you have Berkeley DB installed in a place not searched by default
+ for includes and libraries, add something like this:
+
+ --with-berkeley-db=db.h:/usr/local/include/db4.7:/usr/local/lib/db4.7:db-4.7
+
+ to your `configure' switches, and the build process will use the
+ Berkeley DB header and library in the named directories. You may
+ need to use a different path, of course. Note that in order for
+ the detection to succeed, the dynamic linker must be able to find
+ the libraries at configure time.
+
+ If you are on the Windows platform and want to build Subversion,
+ a precompiled version of the Berkeley DB library is available for
+ download at the Subversion web site "Documents & files" area:
+
+ http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
+
+ Look in the "Releases > Windows > Windows BDB" section.
+
+
+ 8. Cyrus SASL library (OPTIONAL)
+
+ If the Simple Authentication and Security Layer (SASL) library
+ is detected on your system, then the Subversion client and
+ svnserve server can utilize its abilities for various forms of
+ authentication. To learn more about SASL or to get the source
+ code, visit:
+
+ http://freshmeat.net/projects/cyrussasl/
+
+
+ 9. Apache Web Server 2.2.X or newer (OPTIONAL)
+
+ (https://httpd.apache.org/download.cgi)
+
+ The Apache httpd server is one of two methods to make your Subversion
+ repository available over a network - the other is a custom server
+ program called svnserve, which requires no extra software packages.
+ Building Subversion, the Apache server, and the modules that Apache
+ needs to communicate with Subversion are complicated enough that there
+ is a whole section at the end of this document that describes how it
+ is done: See section III for details.
+
+
+ 10. Python 2.7 or newer (https://www.python.org/) (OPTIONAL)
+
+ If you want to run "make check" or build from the latest source
+ under Unix/Windows as described in section II.B, II.E and III.D,
+ install Python 2.7 or higher on your system. The majority of the
+ test suite is written in Python, as is part of Subversion's build
+ system.
+
+ Note that Python 3.x is not supported and most likely won't work.
+
+
+ 11. Perl 5.8 or newer (Windows only) (OPTIONAL)
+
+ To build Subversion under any of the MS Windows platforms, you
+ will also need Perl 5.8 or newer to run apr-util's w32locatedb.pl
+ script.
+
+
+ 12. SQLite (REQUIRED)
+
+ Subversion requires SQLite version 3.8.2 or above. You can meet this
+ dependency several ways:
+ * Use an SQLite amalgamation file.
+ * Specify an SQLite installation to use.
+ * Let Subversion find an installed SQLite.
+
+ To use an SQLite-provided amalgamation, just drop sqlite3.c into
+ Subversion's sqlite-amalgamation/ directory, or point to it with the
+ --with-sqlite configure option. This file also ships with the Subversion
+ dependencies distribution, or you can download it from SQLite:
+
+ https://www.sqlite.org/download.html
+
+
+ 13. pkg-config (Unix only, OPTIONAL)
+
+ Subversion uses pkg-config to find appropriate options used
+ at build time.
+
+
+ 14. D-Bus (Unix only, OPTIONAL)
+
+ D-Bus is a message bus system. D-Bus is required for support for KWallet
+ and GNOME Keyring. pkg-config is needed to find D-Bus headers and library.
+
+
+ 15. Qt 4 (Unix only, OPTIONAL)
+
+ Qt is a cross-platform application framework. QtCore, QtDBus and QtGui
+ modules are required for support for KWallet. pkg-config is needed
+ to find Qt headers and libraries.
+
+
+ 16. KDELibs 4 (Unix only, OPTIONAL)
+
+ Subversion contains optional support for storing passwords in KWallet.
+ KDELibs contains core KDE libraries. Subversion uses libkdecore and libkdeui
+ libraries when support for KWallet is enabled. kde4-config is used to get
+ some necessary options. pkg-config, D-Bus and Qt 4 are also required.
+ If you want to build support for KWallet, then pass the '--with-kwallet'
+ option to `configure`. If KDE is installed in a non-standard prefix, then
+ use:
+
+ --with-kwallet=/path/to/KDE/prefix
+
+ 17. GLib 2 (Unix only, OPTIONAL)
+
+ GLib is a general-purpose utility library. GLib is required for support
+ for GNOME Keyring. pkg-config is needed to find GLib headers and library.
+
+
+ 18. GNOME Keyring (Unix only, OPTIONAL)
+
+ Subversion contains optional support for storing passwords in GNOME Keyring.
+ pkg-config is needed to find GNOME Keyring headers and library. D-Bus and
+ GLib are also required. If you want to build support for GNOME Keyring,
+ then pass the '--with-gnome-keyring' option to `configure`.
+
+
+ 19. Ctypesgen (OPTIONAL)
+
+ Ctypesgen is Python wrapper generator for ctypes. It is used to generate
+ a part of Subversion Ctypes Python bindings (CSVN). If you want to build
+ CSVN, then pass the '--with-ctypesgen' option to `configure`. If ctypesgen.py
+ is installed in a non-standard place, then use:
+
+ --with-ctypesgen=/path/to/ctypesgen.py
+
+ For more information on CSVN, see subversion/bindings/ctypes-python/README.
+
+ 20. libmagic (OPTIONAL)
+
+ Subversion's configure script attempts to find libmagic automatically.
+ If it is installed in a non-standard location, then use:
+
+ --with-libmagic=/path/to/libmagic/prefix
+
+ The files include/magic.h and lib/libmagic.so.1.0 (or similar)
+ are expected beneath this prefix directory. If they cannot be
+ found Subversion will be compiled without support for libmagic.
+
+ If libmagic is installed but support for it should not be compiled
+ in, then use:
+
+ --with-libmagic=no
+
+ If configure should fail when libmagic is not present, but only
+ the default locations should be searched, then use:
+
+ --with-libmagic
+
+ 21. Googlemock (OPTIONAL)
+
+ Googlemock can be installed and built in-tree by invoking
+
+ $ ./get-dep.sh gmock
+
+ 22. LZ4 (OPTIONAL)
+
+ Subversion uses LZ4 compression libary version r129 or above. Configure
+ will attempt to locate the system library by default using pkg-config
+ and known paths.
+
+ If it is installed in a non-standard location, then use:
+
+ --with-lz4=/path/to/liblz4
+
+ If configure should use the version bundled with the sources, use:
+ --with-lz4=internal
+
+ D. Documentation
+
+ The primary documentation for Subversion is the free book
+ "Version Control with Subversion", a.k.a. "The Subversion Book",
+ obtainable from http://svnbook.red-bean.com/.
+
+ Various additional documentation exists in the doc/ subdirectory of
+ the Subversion source. See the file doc/README for more information.
+
+
+
+II. INSTALLATION
+ ============
+
+ A. Building from a Tarball
+ ------------------------------
+
+ 1. Building from a Tarball
+
+ Download the most recent distribution tarball from:
+
+ https://subversion.apache.org/download/
+
+ Unpack it, and use the standard GNU procedure to compile:
+
+ $ ./configure
+ $ make
+ # make install
+
+ You can also run the full test suite by running 'make check'. Even
+ in successful runs, some tests will report XFAIL; that is normal.
+ Failed runs are indicated by FAIL or XPASS results, or a non-zero exit
+ code from "make check".
+
+
+ B. Building the Latest Source under Unix
+ -------------------------------------
+
+ These instructions assume you have already installed Subversion
+ and checked out a working copy of Subversion's own code --
+ either the latest /trunk code, or some branch or tag. You also
+ need to have already installed whatever prerequisites that
+ version of Subversion requires (if you haven't, the ./configure
+ step should complain).
+
+ You can discard the directory created by the tarball; you're
+ about to build the latest, greatest Subversion client. This is
+ the procedure Subversion developers use.
+
+ First off, if you have any Subversion libraries lying around
+ from previous 'make installs', clean them up first!
+
+ # rm -f /usr/local/lib/libsvn*
+ # rm -f /usr/local/lib/libapr*
+ # rm -f /usr/local/lib/libserf*
+
+ Start the process by running "autogen.sh":
+
+ $ sh ./autogen.sh
+
+ This script will make sure you have all the necessary components
+ available to build Subversion. If any are missing, you will be
+ told where to get them from. (See the 'Dependency Overview' in
+ section I.)
+
+ Note: if the command "autoconf" on your machine does not run
+ autoconf 2.59 or later, but you do have a new enough autoconf
+ available, then you can specify the correct one with the
+ AUTOCONF variable. (The AUTOHEADER variable is similar.) This
+ may be required on Debian GNU/Linux, where "autoconf" is
+ actually a Perl script that attempts to guess which version is
+ required -- because of the interaction between Subversion's and
+ APR's configuration systems, the Perl script may get it wrong.
+ So for example, you might need to do:
+
+ $ AUTOCONF=autoconf2.59 sh ./autogen.sh
+
+ Once you've prepared the working copy by running autogen.sh,
+ just follow the usual configuration and build procedure:
+
+ $ ./configure
+ $ make
+ # make install
+
+ (Optionally, you might want to pass --enable-maintainer-mode to
+ the ./configure script. This enables debugging symbols in your
+ binaries (among other things) and most Subversion developers use it.)
+
+ Since the resulting binary depends on shared libraries, the
+ destination library directory must be identified in your
+ operating system's library search path. That is in either
+ /etc/ld.so.conf or $LD_LIBRARY_PATH for Linux systems and in
+ /etc/rc.conf for FreeBSD, followed by a run of the 'ldconfig'
+ program. Check your system documentation for details. By
+ identifying the destination directory, Subversion will be able
+ to dynamically load repository access plugins. If you try to do
+ a checkout and see an error like:
+
+ subversion/libsvn_ra/ra_loader.c:209: (apr_err=170000)
+ svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/subversion/trunk'
+
+ It probably means that the dynamic loader/linker can't find all
+ of the libsvn_* libraries.
+
+
+ C. Building under Unix in Different Directories
+ --------------------------------------------
+
+ It is possible to configure and build Subversion on Unix in a
+ directory other than the working copy. For example
+
+ $ svn co https://svn.apache.org/repos/asf/subversion/trunk svn
+ $ cd svn
+ $ # get SQLite amalgamation if required
+ $ chmod +x autogen.sh
+ $ ./autogen.sh
+ $ mkdir ../obj
+ $ cd ../obj
+ $ ../svn/configure [...with options as appropriate...]
+ $ make
+
+ puts the Subversion working copy in the directory svn and builds
+ it in a separate, parallel directory obj.
+
+ Why would you want to do this? Well there are a number of
+ reasons...
+
+ * You may prefer to avoid "polluting" the working copy with
+ files generated during the build.
+
+ * You may want to put the build directory and the working
+ copy on different physical disks to improve performance.
+
+ * You may want to separate source and object code and only
+ backup the source.
+
+ * You may want to remote mount the working copy on multiple
+ machines, and build for different machines from the same
+ working copy.
+
+ * You may want to build multiple configurations from the
+ same working copy.
+
+ The last reason above is possibly the most useful. For instance
+ you can have separate debug and optimized builds each using the
+ same working copy. Or you may want a client-only build and a
+ client-server build. Using multiple build directories you can
+ rebuild any or all configurations after an edit without the need
+ to either clean and reconfigure, or identify and copy changes
+ into another working copy.
+
+
+ D. Installing from a Zip or Installer File under Windows
+ -----------------------------------------------------
+
+ Of all the ways of getting a Subversion client, this is the
+ easiest. Download a Zip or self-extracting installer via:
+
+ https://subversion.apache.org/packages.html#windows
+
+ For a Zip file extract the DLLs and EXEs to a directory of your
+ choice. Included in the download are among other tools the SVN
+ client, the SVNADMIN administration tool and the SVNLOOK reporting
+ tool.
+
+ You may want to add the bin directory in the Subversion folder to your
+ PATH environment variable so as to not have to use the full path when
+ running Subversion commands.
+
+ To test the installation, open a DOS box (run either "cmd" or
+ "command" from the Start menu's "Run..." menu option), change to
+ the directory you installed the executables into, and run:
+
+ C:\test>svn co https://svn.apache.org/repos/asf/subversion/trunk svn
+
+ This will get the latest Subversion sources and put them into the
+ "svn" subdirectory.
+
+ If using a self-extracting .exe file, just run it instead of
+ unzipping it, to install Subversion.
+
+ E. Building the Latest Source under Windows
+ ----------------------------------------
+
+ E.1 Prerequisites
+
+ * Microsoft Visual Studio. Any recent (2005+) version containing the
+ Visual C++ component will work (E.g. Professional, Express, Community
+ Edition). Make sure you enable C++ support during setup.
+ * Python 2.7 or higher, downloaded from https://www.python.org/ which is
+ used to generate the project files.
+ Note that Python 3.x is not supported (yet).
+ * Perl 5.8 or higher from https://www.perl.org/get.html
+ * Awk (from https://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is
+ needed to compile Apache. Note that this is the actual awk program,
+ not an installer - just rename it to awk.exe and it is ready to use.
+ * Apache apr, apr-util, and optionally apr-iconv libraries, version
+ 1.3 or later (1.2 for apr-iconv). If you are building from a Subversion
+ checkout and have not downloaded Apache 2, then get these 3 libraries
+ from https://www.apache.org/dist/apr/.
+ * SQLite 3.8.2 or higher from https://www.sqlite.org/download.html
+ (3.8.11.1 or higher recommended)
+ * ZLib 1.2 or higher is required and can be obtained from
+ http://www.zlib.net/
+ * Either a Subversion client binary from
+ https://subversion.apache.org/packages.html to do the initial checkout
+ of the Subversion source or the zip file source distribution.
+
+ Additional Options
+
+ * [Optional] Apache Httpd 2 source, downloaded from
+ https://httpd.apache.org/download.cgi, these instructions assume
+ version 2.0.58. This is only needed for building the Subversion
+ server Apache modules. ### FIXME Apache 2.2 or greater required.
+ * [Optional] Berkeley DB for backend support of the server components
+ are available from
+ http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html
+ (Version 4.4.20 or in specific cases some higher version recommended)
+ For more information see Section I.C.7.
+ * [Optional] Openssl can be obtained from https://www.openssl.org/source/
+ * [Optional] NASM can be obtained from http://www.nasm.us/
+ * [Optional] A modified version of GNU libintl, called
+ svn-win32-libintl.zip, can be used for displaying localized
+ messages. Available at:
+ http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627
+ * [Optional] GNU gettext for generating message catalog (.mo)
+ files from message translations. You can get the latest
+ binaries from http://gnuwin32.sourceforge.net/. You'll need the
+ binaries (gettext-0.14.1-bin.zip) and dependencies
+ (gettext-0.14.1-dep.zip).
+
+ E.2 Notes
+
+ The Apache Serf library supports secure connections with OpenSSL
+ and on-the-wire compression with zlib. If you want to use the
+ secure connections feature, you should pass the option
+ "--with-openssl" to the gen-make.py script. See Section I.C.6 for
+ more details.
+
+ E.3 Preparation
+
+ This section describes how to unpack the files to make a build tree.
+
+ * Make a directory SVN and cd into it.
+ * Either checkout Subversion:
+
+ svn co https://svn.apache.org/repos/asf/subversion/trunk src-trunk
+
+ or unpack the zip file distribution and rename the directory to
+ src-trunk.
+
+ * Install Visual Studio Environment. You either have to tell the
+ installer to register environment variables or run VCVARS32.BAT
+ before building anything. If you are using a newer Visual Studio,
+ use the 'Visual Studio 20xx Command Prompt' on the Start menu.
+ * Install Python and add it to your path
+ * Install Perl (it should add itself to the path)
+ ### Subversion doesn't need perl. Only some dependencies need it
+ (OpenSSL and some apr scripts)
+ * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
+ the directory containing it (e.g. SVN\awk) to the path.
+ ### Subversion doesn't need awk. Only some dependencies need it
+ (some apr scripts)
+ * [Optional] Install NASM and add it to your path
+ ### Subversion doesn't need NASM. Only some dependencies need it
+ optionally (OpenSSL)
+ * [Optional] If you checked out Subversion from the repository and want
+ to build Subversion with http/https access support then install the
+ Apache Serf sources into SVN\src-trunk\serf.
+ * [Optional] If you want BDB backend support, extract the Berkeley DB
+ files into SVN\src-trunk\db4-win32. It's a good idea to add
+ SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find
+ the Berkeley DB DLLs.
+
+ [NOTE: This binary package of Berkeley DB is provided for
+ convenience only. Please don't address questions about
+ Berkeley DB that aren't directly related to using Subversion
+ to the project mailing list.]
+
+ If you build Berkeley DB from the source, you will have to copy
+ the file db-x.x.x\build_win32\db.h to
+ SVN\src-trunk\db4-win32\include, and all the import libraries to
+ SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in
+ your path.
+ ### Just use --with-serf instead of the hardcoded path
+
+ * [Optional] If you want to build the server modules, extract Apache
+ source into SVN\httpd-2.x.x.
+ * If you are building from a checkout of Subversion, and you are NOT
+ building Apache, then you will need the APR libraries. Depending
+ on how you got your version of APR, either:
+ - Extract the APR, APR-util and APR-iconv source distributions into
+ SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively.
+ Or:
+ - Extract the apr, apr-util and apr-iconv directories from the
+ srclib folder in the Apache httpd source into SVN\apr,
+ SVN\apr-util, and SVN\apr-iconv respectively.
+ ### Just use --with-apr, etc. instead of the hardcoded paths
+ * Extract the ZLib sources into SVN\zlib if you are not using the zlib
+ included in the dependencies zip file.
+ ### Just use --with-zlib instead of the hardcoded path
+ * [Optional] If you want secure connection (https) client support extract
+ OpenSSL into SVN\openssl
+ ### And pass the path to both serf and gen-make.py
+ * [Optional] If you want localized message support, extract
+ svn-win32-libintl.zip into SVN\svn-win32-libintl and extract
+ gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into
+ SVN\gettext-x.x.x-bin.
+ Add SVN\gettext-x.x.x-bin\bin to your path.
+ * Download the SQLite amalgamation from
+ https://www.sqlite.org/download.html
+ and extract it into SVN\sqlite-amalgamation.
+ See I.C.12 for alternatives to using the amalgamation package.
+
+ E.4 Building the Binaries
+
+ To build the binaries either follow the instructions here or use
+ build\win32\vc6-build.bat.in after editing its default paths to match
+ yours and saving it as vc6-build.bat. The vc6-build.bat does a full build
+ using all options so it requires Apache 2 source and the other optional
+ components.
+
+ Start in the SVN directory you created.
+
+ Set up the environment (commands should be one line even if wrapped here).
+
+ C:>set VER=trunk
+ C:>set DIR=trunk
+ C:>set BUILD_ROOT=C:\SVN
+ C:>set PYTHONDIR=C:\Python27
+ C:>set AWKDIR=C:\SVN\Awk
+ C:>set ASMDIR=C:\SVN\asm
+ C:>set SDKINC="C:\Program Files\Microsoft SDK\include"
+ C:>set SDKLIB="C:\Program Files\Microsoft SDK\lib"
+ C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin
+ C:>PATH=%PATH%;%BUILD_ROOT%\src-%DIR%\db4-win32;%ASMDIR%;
+ %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN%
+ C:>set INCLUDE=%SDKINC%;%INCLUDE%
+ C:>set LIB=%SDKLIB%;%LIB%
+
+ OpenSSL < 1.1.0
+
+ C:>cd openssl
+ C:>perl Configure VC-WIN32
+ [*] C:>call ms\do_masm
+ C:>nmake -f ms\ntdll.mak
+ C:>cd out32dll
+ C:>call ..\ms\test
+ C:>cd ..\..
+
+ *Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or
+ "call ms\do_ms" if you don't have an assembler.
+ Also if you are using OpenSSL >= 1.0.0 masm is no longer
+ supported. You will have to use do_nasm or do_ms in this case.
+
+ OpenSSL >= 1.1.0
+
+ C:>cd openssl
+ C:>perl Configure VC-WIN32
+ C:>nmake
+ C:>nmake test
+ C:>cd ..
+
+ Apache 2
+
+ This step is only required for building the server dso modules.
+
+ ### FIXME Apache 2.2 or greater required. Old build instructions for VC6.
+
+ C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
+ C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
+
+ APR
+
+ If you downloaded APR / APR-UTIL / APR_ICONV by source, you will have to
+ build these libraries first.
+ Building these libraries on Windows is straight forward and in most cases
+ as simple as issuing these two commands:
+
+ C:>nmake -f Makefile.win
+ C:>nmake -f Makefile.win install
+
+ Please refere to the build instructions provided by the library source
+ for actual build instructions.
+
+ ZLib
+
+ If you downloaded the zlib source, you will have to build ZLib first.
+ Building ZLib using Visual Studio should be quite simple. Just open the
+ appropriate solution and build the project zlibstat using the IDE.
+
+ Please refere to the build instructions provided by the library source
+ for actual build instructions.
+
+ Note that you'd make sure to define ZLIB_WINAPI in the ZLib config
+ header and move the lib-file into the zlib root-directory.
+
+ Apache Serf
+
+ ### Section about Apache Serf might be required/useful to add.
+ ### scons is required too and Apache Serf needs to be configured prior to
+ ### be able to build Subversion using:
+ ### scons APR=[PATH_TO_APR] APU=[PATH_TO_APU] OPENSSL=[PATH_TO_OPENSSL]
+ ### ZLIB=[PATH_TO_ZLIB] PREFIX=[PATH_TO_SERF_DEST]
+ ### scons check
+ ### scons install
+
+ Subversion
+
+ Things to note:
+
+ * If you don't want to build mod_dav_svn, omit the --with-httpd
+ option. The zip file source distribution contains apr, apr-util and
+ apr-iconv in the default build location. If you have downloaded the
+ apr files yourself you will have to tell the generator where to find
+ the APR libraries; the options are --with-apr, --with-apr-util and
+ --with-apr-iconv.
+ * If you would like a debug build substitute Debug for Release in
+ the msbuild command.
+ * There have been rumors that Subversion on Win32 can be built
+ using the latest cygwin, you probably don't want the zip file source
+ distribution though. ymmv.
+ * You will also have to distribute the C runtime dll with the binaries.
+ Also, since Apache/APR do not provide .vcproj files, you will need to
+ convert the Apache/APR .dsp files to .vcproj files with Visual Studio
+ before building -- just open the Apache .dsw file and answer 'Yes To
+ All' when the conversion dialog pops up, or you can open the individual
+ .dsp files and convert them one at a time.
+ The Apache/APR projects required by Subversion are:
+ apr-util\libaprutil.dsp, apr\libapr.dsp,
+ apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp,
+ apr-iconv\ccs\libapriconv_ccs_modules.dsp, and
+ apr-iconv\ces\libapriconv_ces_modules.dsp.
+ * If the server dso modules are being built and tested Apache must not
+ be running or the copy of the dso modules will fail.
+
+ C:>cd src-%DIR%
+
+ If Apache 2 has been built and the server modules are required then
+ gen-make.py will already have been run. If the source is from the zip
+ file, Apache 2 has not been built so gen-make.py must be run:
+
+ C:>python gen-make.py --vsnet-version=20xx --with-berkeley-db=db4-win32
+ --with-openssl=..\openssl --with-zlib=..\zlib
+ --with-libintl=..\svn-win32-libintl
+
+ Then build subversion:
+
+ C:>msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release
+ C:>cd ..
+
+ The binaries have now been built.
+
+ E.5 Packaging the binaries
+
+ You now need to copy the binaries ready to make the release zip
+ file. You also need to do this to run the tests as the new binaries
+ need to be in your path. You can use the build/win32/make_dist.py
+ script in the Subversion source directory to do that.
+
+ [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.]
+
+ E.6 Testing the Binaries
+ [TBD: It's been a long, long while since it was necessary to move
+ binaries around for testing. win-tests.py does that automagically.
+ Fix this section accordingly, and probably reorder, putting
+ the packaging at the end.]
+
+ The build process creates the binary test programs but it does not
+ copy the client tests into the release test area.
+
+ C:>cd src-%DIR%
+ C:>mkdir Release\subversion\tests\cmdline
+ C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline
+
+ If the server dso modules have been built then copy the dso files and
+ dlls into the Apache modules directory.
+
+ C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEDIR%"\modules
+ C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so
+ "%APACHEDIR%"\modules
+ C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin"
+ C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin"
+ C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin"
+ C:>cd ..
+
+ Put the svn-win32-trunk\bin directory at the start of your path so
+ you run the newly built binaries and not another version you might
+ have installed.
+
+ Then run the client tests:
+
+ C:>PATH=%BUILD_ROOT%\svn-win32-%VER%\bin;%PATH%
+ C:>cd src-%DIR%
+ C:>python win-tests.py -c -r -v
+
+ If the server dso modules were built configure Apache to use the
+ mod_dav_svn and mod_authz_svn modules by making sure these lines appear
+ uncommented in httpd.conf:
+
+ LoadModule dav_module modules/mod_dav.so
+ LoadModule dav_fs_module modules/mod_dav_fs.so
+ LoadModule dav_svn_module modules/mod_dav_svn.so
+ LoadModule authz_svn_module modules/mod_authz_svn.so
+
+ And further down the file add location directives to point to the
+ test repositories. Change the paths to the SVN directory you created
+ (paths should be on one line even if wrapped here):
+
+ <Location /svn-test-work/repositories>
+ DAV svn
+ SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/
+ svn-test-work/repositories
+ </Location>
+
+ <Location /svn-test-work/local_tmp/repos>
+ DAV svn
+ SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/
+ svn-test-work/local_tmp/repos
+ </Location>
+
+ Then restart Apache and run the tests:
+
+ C:>python win-tests.py -c -r -v -u http://localhost
+ C:>cd ..
+
+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. For more info about the db requirement,
+ see section I.C.7.
+
+ 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.E 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
+ (http://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. Alternative: 'svnserve' and ra_svn
+ -----------------------------------
+
+ 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 -d # becomes a background daemon
+ $ svn checkout svn://localhost/usr/local/svn/repository
+
+ 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.)
+
+ '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
+ (http://svnbook.red-bean.com) for details on these features.
+
+
+
+IV. PLATFORM-SPECIFIC ISSUES
+ ========================
+
+ A. Windows XP
+ ----------
+
+ There is an error in the Windows XP TCP/IP stack which causes
+ corruption in certain cases. This problem is exposed only
+ through ra_dav.
+
+ The root of the matter is caused by duplicating file handles
+ between parent and child processes. The httpd Apache group
+ explains this a lot better:
+
+ https://www.apache.org/dist/httpd/binaries/win32/#xpbug
+
+ And there's an item about this in the Subversion FAQ:
+
+ https://subversion.apache.org/faq.html#windows-xp-server
+
+ The only known workaround for now is to update to Windows XP
+ SP1 (or higher).
+
+
+ B. Mac OS X
+ --------
+
+ [TBD: Describe BDB 4.0.x problem]
+
+
+
+V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
+ ========================================================
+
+ For Python, Perl and Ruby bindings, see the file
+
+ ./subversion/bindings/swig/INSTALL
+
+ For Java bindings, see the file
+
+ ./subversion/bindings/javahl/README