* tools/hook-scripts/commit-email.pl.in
[svn.git] / INSTALL
blob5fb3dd1daf9e92041eeda4e6ec261b9e19c6cb8a
1                ======================================
2                       INSTALLING SUBVERSION
3                           A Quick Guide
4                ======================================
6 $LastChangedDate$
9 Contents:
11      I. INTRODUCTION
12        A. Audience
13        B. Dependency Overview
14        C. Dependencies in Detail
16     II. INSTALLATION
17        A. Building from a Tarball or RPM
18        B. Building the Latest Source under Unix
19        C. Building under Unix in Different Directories
20        D. Installing from a Zip or Installer File under Windows
21        E. Building the Latest Source under Windows
23    III. BUILDING A SUBVERSION SERVER
24        A. Setting Up Apache
25        B. Making and Installing the Subversion Server
26        C. Configuring Apache for Subversion
27        D. Running and Testing
28        E. Alternative:  'svnserve' and ra_svn
30     IV. PLATFORM-SPECIFIC ISSUES
31        A. Windows XP
32        B. Mac OS X
34      V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
38 I.    INTRODUCTION
39       ============
41   A. Audience
43       This document is written for people who intend to build
44       Subversion from source code.  Normally, the only people who do
45       this are Subversion developers and package maintainers.  
47       If neither of these labels fits you, we recommend you find an
48       appropriate binary package of Subversion and install that.
49       While the Subversion project doesn't officially release binary
50       packages, a number of volunteers have made such packages
51       available for different operating systems.  Most Linux and BSD
52       distributions already have Subversion packages ready to go via
53       standard packaging channels, and other volunteers have built
54       'installers' for both Windows and OS X.  Visit this page for
55       package links:
57          http://subversion.tigris.org/project_packages.html
59       For those of you who still wish to build from source, Subversion
60       follows the Unix convention of "./configure && make", but it has
61       a number of dependencies.
64   B. Dependency Overview
66       You'll need the following build tools to compile Subversion:
68       * autoconf 2.58 or later (Unix only)
69       * libtool 1.4 or later (Unix only)
70       * a reasonable C compiler (gcc, Visual Studio, etc.)
73       Subversion also depends on the following third-party libraries:
75       * libapr and libapr-util (REQUIRED for client and server)
77          The Apache Portable Runtime (APR) library provides an
78          abstraction of operating-system level services such as file
79          and network I/O, memory management, and so on.  It also
80          provides convenience routines for things like hashtables,
81          checksums, and argument processing.  While it was originally
82          developed for the Apache HTTP server, APR is a standalone
83          library used by Subversion and other products.  It is a
84          critical dependency for all of Subversion; it's the layer
85          that allows Subversion clients and servers to run on
86          different operating systems.
88       * libz  (REQUIRED for client and server)
90          Subversion uses zlib for compressing binary differences.
91          These diff streams are used everywhere -- over the network,
92          in the repository, and in the client's working copy.
94       * libneon or libserf  (OPTIONAL for client)
96          The Neon and Serf libraries both allow the Subversion client
97          to send HTTP requests.  This is necessary if you want your
98          client to access a repository served by the Apache HTTP
99          server.  There is an alternate 'svnserve' server as well,
100          though, and clients automatically know how to speak the
101          svnserve protocol.  Thus it's not strictly necessary for your
102          client to be able to speak HTTP... though we still recommend
103          that your client be built to speak both HTTP and svnserve
104          protocols.  Your client can be compiled against either
105          libneon or libserf (or both), as they offer competing
106          implementations.
108       * OpenSSL (OPTIONAL for client and server)
110          OpenSSL enables your client to access SSL-encrypted https://
111          URLs (using either libneon or libserf) in addition to
112          unencrypted http:// URLs.  To use SSL with Subversion's
113          WebDAV server, Apache needs to be compiled with OpenSSL as
114          well.
116       * Berkeley DB (OPTIONAL for client and server)
118          There are two different repository 'back-end'
119          implementations.  One implementation stores data in a flat
120          filesystem (known as FSFS); the other implementation stores
121          data in a Berkeley DB database (known as BDB).  When you
122          create a repository, you have the option of specifying a
123          storage back-end.  The Berkeley DB back-end will only be
124          available if the BDB libraries are discovered at compile
125          time.
127       * libsasl (OPTIONAL for client and server)
129          If the Cyrus SASL library is detected at compile time, then
130          the svn client (and svnserve server) will be able to utilize
131          SASL to do various forms of authentication when speaking the
132          svnserve protocol.
134       * Python, Perl, Java, Ruby  (OPTIONAL)
136          Subversion is mostly a collection of C libraries with
137          well-defined APIs, with a small collection of programs that
138          use the APIs.  If you want to build Subversion API bindings
139          for other languages, you need to have those languages
140          available at build time.
143   C. Dependencies in Detail
145       Subversion depends on a number of third party tools and libraries.
146       Some of them are only required to run a Subversion server; others
147       are necessary just for a Subversion client.  This section explains
148       what other tools and libraries will be required so that Subversion
149       can be built with the set of features you want.
151       On Unix systems, the './configure' script will tell you if you are
152       missing the correct version of any of the required libraries or
153       tools, so if you are in a real hurry to get building, you can skip
154       straight to section II.  If you want to gather the pieces you will
155       need before starting out, however, you should read the following.
157       If you're just installing a Subversion client, the Subversion
158       team has created a package containing the minimal prerequisite
159       libraries (Apache Portable Runtime, Neon, and Zlib) called the
160       "dependency package" tarball or zipfile.  You should be able to
161       find it at the same place that you downloaded the Subversion
162       tarball itself from. (Note that this is new as of Subversion
163       1.4.0; previous releases packaged the dependencies in the same
164       tarball as Subversion itself.)  If you don't have these
165       libraries installed already, you can simply unpack the
166       dependency package "on top of" the Subversion package; for
167       example, if you are using a .tar.gz bundle on Unix, you could
168       type:
170           $ tar xzvf subversion-1.x.x.tar.gz
171           $ tar xzvf subversion-deps-1.x.x.tar.gz
172           $ cd subversion-1.x.x
174       This will place 'apr', 'apr-util', 'neon', and 'zlib'
175       directories directly into your unpacked Subversion distribution,
176       where they will be automatically configured and built by
177       Subversion's build process.
179       Note: Because previous builds of Subversion may have installed older
180       versions of these libraries, you may want to run some of the cleanup
181       commands described in section II.B before installing the following.
184       1.  Apache Portable Runtime 0.9.7 or 1.2.X  (REQUIRED)
186       Whenever you want to build any part of Subversion, you need the
187       Apache Portable Runtime (APR) and the APR Utility (APR-util)
188       libraries. These are included in the Subversion dependency package -
189       if you are building from a source tarball and wish to use the versions
190       of APR and APR-util included there, just unpack the dependency package
191       and skip ahead to the next requirement.
194         ****************************************************************
195         **       IMPORTANT ISSUE ABOUT APR VERSIONS:  READ THIS.      **
196         **                                                            **
197         ****************************************************************
198         |                                                              |
199         | APR 0.9.X and 1.X are binary-incompatible.                   |
200         |                                                              |
201         | This means:                                                  |
202         |                                                              |
203         |   - if you are already using Subversion with APR 0.9.X, and  |
204         |     then upgrade your libapr to 1.X without rebuilding       |
205         |     Subversion, things will break and segfault.              |
206         |                                                              |
207         |   - if your Subversion server libraries are linked to one    | 
208         |     version of APR, but your Apache server is linked to a    | 
209         |     different version, things will break and segfault.       |
210         |                                                              |
211         | Subversion 1.0 originally shipped with APR 0.9.  Even        |
212         | though APR 1.X has been available for many years, we         |
213         | continue to ship APR 0.9 so as not to accidentally break     |
214         | binary compatibility in Subversion upgrades.                 |
215         |                                                              |
216         | However, it's *perfectly* safe to use APR 1.X from the       |
217         | beginning.  In fact, we recommend it.  If you're building    |
218         | Subversion for the first time, there's no compatibility      |
219         | issue to worry about, so grab the latest version of APR      |
220         | (rather than the 0.9.X version we distribute.)               |
221         |                                                              |
222         | If you already have a Subversion installation using APR      |
223         | 0.9.x, it's still possible to move to APR 1.X safely.  Just  |
224         | be sure to recompile Subversion after upgrading APR!         |
225         |______________________________________________________________|
228       If you are not building from a tarball with the dependency
229       package, you will need to get these yourself:
231           http://apr.apache.org/download.cgi
233       On Unix systems, if you already have the APR libraries compiled and do
234       not wish to regenerate them from source code, then Subversion needs to
235       be able to find them.
237       There are a couple of options to "./configure" that tell it where
238       to look for the APR and APR-util libraries. By default, it will first
239       look for bundled versions of APR and APR-util, and then try to locate
240       already installed versions of the libraries using the apr-config and
241       apu-config scripts. These scripts provide all the relevant information
242       for the APR and APR-util installations.
244       If you want to specify the location of the APR library, you can use
245       the "--with-apr=" option of "./configure". It should be able to find
246       the apr-config script in the standard location under that directory
247       (e.g. ${prefix}/bin).
249       Similarly, you can specify the location of APR-util using the
250       "--with-apr-util=" option to "./configure". It will look for the
251       apu-config script relative to that directory.
253       For example, if you want to use the APR libraries you built
254       with the Apache httpd server, you could run:
256           $ ./configure --with-apr=/usr/local/apache2 \
257             --with-apr-util=/usr/local/apache2  ...
259       If you want Subversion to build the APR libraries from source
260       code as part of the Subversion build process, you can put their
261       source code into the "./apr" and "./apr-util" directories.
263       Be sure to use a native Windows SVN client (as opposed to
264       Cygwin's version) so that the .dsp files get carriage-returns at
265       the ends of their lines.  Otherwise Visual Studio will complain
266       that it doesn't recognize the .dsp files.
268       If you use APR libraries checked out from svn in an Unix
269       environment, you need to run the 'buildconf' script in each
270       library's directory, to regenerate the configure scripts and
271       other files required for compiling the libraries:
273       $ cd apr; ./buildconf; cd ..
275       $ cd apr-util; ./buildconf; cd ..
278       2. Zlib  (REQUIRED)
280          Subversion's binary-differencing engine depends on zlib for
281          compression.   Most Unix systems have libz pre-installed, but
282          if you need it, you can get it from
284             http://www.zlib.net
287       3.  autoconf 2.58 or newer (Unix only)
289       This is required only if you plan to build from the latest source
290       (see section II.B). Generally only developers would be doing this.
293       4.  libtool 1.4 or newer (Unix only)
295       This is required only if you plan to build from the latest source
296       (see section II.B).
298       Note: Some systems (Solaris, for example) require libtool 1.4.3 or
299       newer. The autogen.sh script knows about that.
302       5.  An HTTP client libary:  either neon or serf.  (OPTIONAL)
304         neon and serf are competing implementations of HTTP client
305         libraries.  If you want your client to be able to speak to an
306         Apache server (via a http:// or https:// URL), you must link
307         against at least one of these libraries.  Though optional, we
308         strongly recommend this.
310         (If you link against both, you can configure which one is used
311         in your ~/.subversion/servers configuration file.)
313         a. Neon library 0.25, 0.26, 0.27, or 0.28 (http://www.webdav.org/neon/)
315            The Neon library allows a Subversion client to interact
316            with remote repositories over the Internet via a WebDAV
317            based protocol.
319            The source code is included with the Subversion
320            dependencies package, and it can also be obtained from:
322                http://www.webdav.org/neon/neon-0.25.5.tar.gz
323                http://www.webdav.org/neon/neon-0.26.4.tar.gz
324                http://www.webdav.org/neon/neon-0.27.2.tar.gz
326            Building Neon inside the subversion build:
328            The Neon library source code can be placed in "./neon" if
329            you want Subversion to build it as part of the Subversion
330            build process.
332            Unpack the archive using tar/gunzip.  Rename the resulting
333            directory from ./neon-0.XX.Y to just "./neon", inside the
334            top level of your Subversion source tree.  (This is what
335            unpacking the Subversion dependencies package does, too.)
337            Using Neon as an external library:
339            We recommend that you keep the neon installation out of the
340            Subversion working copy.  This is because most developers
341            have multiple working copies of Subversion, and it is
342            easier to use a single instance of the Neon library for all
343            instances.  To do this, just unzip/untar Neon, and build
344            and install it according to its own standard installation
345            instructions.  Then follow the steps below to use the
346            installed Neon when building.
348            Subversion's configuration mechanism should auto-detect the
349            installed Neon.  If it does not, you may need to set the
350            LDFLAGS environment variable when you run "./configure", or
351            specify Neon's location by passing the "--with-neon="
352            option to "./configure".  Look for the "neon-config" script
353            in a "bin/" subdirectory of the target of "--with-neon".
354            For example, if you pass "--with-neon=/usr/local/myneon/",
355            then there should be a file
356            "/usr/local/myneon/bin/neon-config".
358         b. Serf library 0.1.2 (http://code.google.com/p/serf/)
360            serf is a library for HTTP and WebDAV which is an
361            alternative to Neon for accessing Subversion repositories
362            over http:// and https:// URLs.  serf is designed as an
363            asynchronous library which can take advantage of HTTP
364            pipelining, so ra_serf may be more efficient than ra_neon
365            and better for HTTP proxy caches.  The serf library can be
366            found at:
368                http://code.google.com/p/serf/
370            In order to use ra_serf instead of ra_neon, you must install
371            serf, and run Subversion's ./configure with the argument
372            --with-serf.  (To only use ra_serf and not ra_neon, you
373            should also use --without-neon.)  If serf is installed in a
374            non-standard place, you should use
376                --with-serf=/path/to/serf/install
378            instead.  If you build with both ra_neon and ra_serf,
379            Subversion will use ra_neon by default; add "http-library =
380            serf" to the [global] section of your ~/.subversion/servers
381            file to use ra_serf instead.
383            For more information on serf and Subversion's ra_serf, see
384            the file subversion/libsvn_ra_serf/README.
387       6. OpenSSL  (OPTIONAL)
389       The Neon and Serf libraries have support for SSL encryption by
390       relying on the OpenSSL library.
392       When Neon is created with this dependency, then the Subversion
393       client inherits the ability to support SSL connections.  Neon
394       also has support for sending compressed data using the zlib
395       library which a Subversion client can take advantage of.
397       On Unix systems, if you are building neon as part of the
398       Subversion build process (as described in section I.4 above),
399       you can pass flags to Subversion's "./configure", and they will
400       be passed on to neon's "./configure".  You need OpenSSL
401       installed on your system, and you must add "--with-ssl" as a
402       "./configure" parameter.  If your OpenSSL installation is hard
403       for Neon to find, you may need to use "--with-libs=/path/to/lib"
404       in addition.  In particular, on Red Hat (but not Fedora Core) it
405       is necessary to specify "--with-libs=/usr/kerberos" for OpenSSL
406       to be found.  The zlib library is included in the Subversion
407       dependencies package, but if you are compiling Neon from a
408       different source you can also specify a path to the library
409       using "--with-libs".  Consult the Neon documentation for more
410       information on how to use these parameters and versions of
411       libraries you need.
413       Under Windows, you can specify the paths to these libraries by
414       passing the options --with-zlib and --with-openssl to gen-make.py.
416       You can also add support for these features to an Apache httpd server
417       to be used for Subversion using the same support libraries.  The
418       Subversion build system will not provide them, however.  You add them
419       by specifying parameters to the "./configure" script of the Apache
420       Server instead.
422       For getting SSL on your server, you would add the "--enable-ssl"
423       or "--with-ssl=/path/to/lib" option to Apache's "./configure"
424       script.  Apache enables zlib support by default, but you can
425       specify a nonstandard location for the library with the
426       "--with-z=/path/to/dir" option.  Consult the Apache documentation
427       for more details, and for other modules you may wish to install
428       to enhance your Subversion server.
430       If you don't already have it, you can get a copy of OpenSSL,
431       including instructions for building and packaging on both Unix
432       systems and Windows, at:
434           http://www.openssl.org/
437       7.  Berkeley DB 4.X  (OPTIONAL)
439       Berkeley DB is needed to build a Subversion server that supports
440       the BDB repository filesystem, or to access a BDB repository on
441       local disk.  If you will only use the FSFS repository filesystem,
442       or if you are building a Subversion client that will only speak
443       to remote (networked) repositories, you don't need it.
445       The current recommended version is 4.4.20, which brings
446       auto-recovery functionality to the Berkeley DB database
447       environment.  (Preliminary testing indicates that Subversion
448       will also work with Berkeley DB 4.5 once APR grows support for
449       that release.)
451       If you must use an older version of Berkeley DB, we *strongly*
452       recommend using 4.3 or 4.2 over the 4.1 or 4.0 versions.  Not
453       only are these significantly faster and more stable, but they
454       also enable Subversion repositories to automatically clean up
455       database journal files to save disk space.
457       You'll need Berkeley DB installed on your system.  You can
458       get it from:
460       http://www.oracle.com/technology/software/products/berkeley-db/index.html
462       If you have Berkeley DB installed in a place not searched by default
463       for includes and libraries, add something like this:
465           --with-berkeley-db=/usr/local/BerkeleyDB.4.4
467       to your `configure' switches, and the build process will use the
468       Berkeley library in the named directory.  You may need to use a
469       different path, of course.  Note that in order for the detection
470       to succeed, the dynamic linker must be able to find the libraries
471       at configure time.
473       If you are on the Windows platform and want to build Subversion,
474       a precompiled version of the Berkeley DB library is available for
475       download at the Subversion web site "Documents & files" area:
477           http://subversion.tigris.org/servlets/ProjectDocumentList
479       Look in the "Releases > Windows > Windows BDB" section.
482       8.  Cyrus SASL library (OPTIONAL)
484       If the Simple Authentication and Security Layer (SASL) library
485       is detected on your system, then the Subversion client and
486       svnserve server can utilize its abliities for various form of
487       authentication.  To learn more about SASL or to get the source
488       code, visit:
490          http://freshmeat.net/projects/cyrussasl/
493       9.  Apache Web Server 2.X  (OPTIONAL)
495           (http://httpd.apache.org/download.cgi)
497       The Apache httpd server is one of two methods to make your Subversion
498       repository available over a network - the other is a custom server
499       program called svnserve, which requires no extra software packages.
500       Building Subversion, the Apache server, and the modules that Apache
501       needs to communicate with Subversion are complicated enough that there
502       is a whole section at the end of this document that describes how it
503       is done: See section III for details.
506       10.  Python 2.2 or newer (http://www.python.org/)  (OPTIONAL)
508       If you want to run "make check" or build from the latest source
509       under Unix as described in section II.B and III.D, install
510       Python 2.2 or higher on your system. The majority of the test
511       suite is written in Python, as is part of Subversion's build
512       system.
515       11. Perl 5.8 or newer (Windows only)  (OPTIONAL)
517       To build Subversion under any of the MS Windows platforms, you
518       will also need Perl 5.8 or newer to run apr-util's w32locatedb.pl
519       script.
522       12. MASM 6 or newer (Windows only, OPTIONAL)
524       The Windows build scripts for Subversion can use the Microsoft
525       Macro Assembler (MASM) to build an optimized version of the ZLib
526       library. Make sure that the version of MASM you use is compatible
527       with the C compiler. If you're using MSVC 6, and don't have MASM 6,
528       a free MASM-compatible assembler is available here:
530           http://www.masm32.org/
532       You only need ML.EXE and ML.ERR from this distribution.
534       The VS.NET installation already contains MASM (but note, that
535       version if MASM is not compatible with MSVC 6).
538       13. Documentation
540       The primary documentation for Subversion is the free book
541       "Version Control with Subversion", a.k.a. "The Subversion Book",
542       obtainable from http://svnbook.red-bean.com/.
544       Various additional documentation exists in the doc/ subdirectory of
545       the Subversion source.  See the file doc/README for more information.
549 II.   INSTALLATION
550       ============
552   A.  Building from a Tarball or RPM
553       ------------------------------
555       1.  Building from a Tarball
557       Download the most recent distribution tarball from:
559           http://subversion.tigris.org/servlets/ProjectDocumentList
561       Unpack it, and use the standard GNU procedure to compile:
563           $ ./configure
564           $ make
565           # make install
567       You can also run the full test suite by running 'make check'.
570       2.  Building from an RPM
572       If you are using Linux (or any OS that can use RPM) then another
573       possibility is to download the binary RPM from the
574       http://summersoft.fay.ar.us/pub/subversion directory.
576       Currently only Linux on the i386 platform is supported
577       using this method.  You might also require additional RPMS
578       (which can be found in the above mentioned directory) to use the
579       subversion RPM depending on what packages you already have installed:
581           subversion*.i386.rpm
582           apache*.i386.rpm (Version 2.0.49 or greater)
583           db*.i386.rpm     (Version 4.0.14 or greater; version 4.3.27 or
584                             4.2.52 is preferred however)
585           expat            (Comes with RedHat)
586           neon             (Version 0.25.5)
588       After downloading, install it (as root user):
590           # rpm -ivh subversion*.386.rpm (add other packages as necessary)
592       Note: For an easy way to generate a new version of the RPM
593       source and binary package from the latest source code you
594       just checked out, see the packages/rpm/README file for a
595       one-line build procedure.
598   B.  Building the Latest Source under Unix
599       -------------------------------------
601       These instructions assume you have already installed Subversion
602       and checked out a working copy of Subversion's own code --
603       either the latest /trunk code, or some branch or tag.  You also
604       need to have already installed whatever prerequisites that
605       version of Subversion requires (if you haven't, the ./configure
606       step should complain).
608       You can discard the directory created by the tarball; you're
609       about to build the latest, greatest Subversion client.  This is
610       the procedure Subversion developers use.
612       First off, if you have any Subversion libraries lying around
613       from previous 'make installs', clean them up first!
615           # rm -f /usr/local/lib/libsvn*
616           # rm -f /usr/local/lib/libapr*
617           # rm -f /usr/local/lib/libexpat*
618           # rm -f /usr/local/lib/libneon*
620       Start the process by running "autogen.sh":
622           $ sh ./autogen.sh
624       This script will make sure you have all the necessary components
625       available to build Subversion.  If any are missing, you will be
626       told where to get them from.  (See the 'Build Requirements' in
627       section I.)
629       Note: if the command "autoconf" on your machine does not run
630       autoconf 2.58 or later, but you do have a new enough autoconf
631       available, then you can specify the correct one with the
632       AUTOCONF variable.  (The AUTOHEADER variable is similar.)  This
633       may be required on Debian GNU/Linux, where "autoconf" is
634       actually a Perl script that attempts to guess which version is
635       required -- because of the interaction between Subversion's and
636       APR's configuration systems, the Perl script may get it wrong.
637       So for example, you might need to do:
639           $ AUTOCONF=autoconf2.58 sh ./autogen.sh
641       Once you've prepared the working copy by running autogen.sh,
642       just follow the usual configuration and build procedure:
644           $ ./configure
645           $ make
646           # make install
648       (Optionally, you might want to pass --enable-maintainer-mode to
649       the ./configure script.  This enables debugging symbols in your
650       binaries (among other things) and most Subversion developers use it.)
652       Since the resulting binary depends on shared libraries, the
653       destination library directory must be identified in your
654       operating system's library search path. That is in either
655       /etc/ld.so.conf or $LD_LIBRARY_PATH for Linux systems and in
656       /etc/rc.conf for FreeBSD, followed by a run of the 'ldconfig'
657       program. Check your system documentation for details. By
658       identifying the destination directory, Subversion will be able
659       to dynamically load repository access plugins.  If you try to do
660       a checkout and see an error like:
662       subversion/libsvn_ra/ra_loader.c:209: (apr_err=170000)
663       svn: Unrecognized URL scheme 'http://svn.collab.net/repos/svn/trunk'
665       It probably means that the dynamic loader/linker can't find all
666       of the libsvn_* libraries.
668       Note that if you commonly build with the -jN option to make and
669       have unpacked a dependency tarball into your checkout, the make
670       step above may fail, because we don't ensure that third party
671       libraries in our source tree will finish building before
672       subversion itself.  If you want to use -jN, use the following
673       instead:
675           $ ./configure
676           $ make -jN external-all
677           $ make -jN local-all
678           $ make check
679           # make install
682   C.  Building under Unix in Different Directories
683       --------------------------------------------
685       It is possible to configure and build Subversion on Unix in a
686       directory other than the working copy. For example
688           $ svn co http://svn.collab.net/repos/svn/trunk svn
689           $ cd svn
690           $ # get neon/apr as required
691           $ chmod +x autogen.sh
692           $ ./autogen.sh
693           $ mkdir ../obj
694           $ cd ../obj
695           $ ../svn/configure [...with options as appropriate...]
696           $ make
698       puts the Subversion working copy in the directory svn and builds
699       it in a separate, parallel directory obj.
701       Why would you want to do this? Well there are a number of
702       reasons...
704           *  You may prefer to avoid "polluting" the working copy with
705              files generated during the build.
707           *  You may want to put the build directory and the working
708              copy on different physical disks to improve performance.
710           *  You may want to separate source and object code and only
711              backup the source.
713           *  You may want to remote mount the working copy on multiple
714              machines, and build for different machines from the same
715              working copy.
717           *  You may want to build multiple configurations from the
718              same working copy.
720       The last reason above is possibly the most useful.  For instance
721       you can have separate debug and optimized builds each using the
722       same working copy. Or you may want a client-only build and a
723       client-server build. Using multiple build directories you can
724       rebuild any or all configurations after an edit without the need
725       to either clean and reconfigure, or identify and copy changes
726       into another working copy.
729   D.  Installing from a Zip or Installer File under Windows
730       --------------------------------------------------------
732       Of all the ways of getting a Subversion client, this is the
733       easiest.  Download a Zip (*.zip) or self-extracting installer
734       (*-setup.exe) file from:
736       http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
738       For a Zip file, run your unzipping utility (WinZIP, ZipGenius,
739       UltimateZIP, FreeZIP, whatever) and extract the DLLs and EXEs to
740       a directory of your choice. Included in the download is the SVN
741       client, the SVNADMIN administration tool, and the SVNLOOK
742       reporting tool.
744       Note that if you need support for non-English locales you'll have
745       to set the APR_ICONV_PATH environment variable to the path of the
746       iconv directory in the folder that contains the Subversion install.
748       You may also want to add the bin directory in the Subversion folder
749       to your PATH environment variable so as to not have to use the full
750       path when running Subversion commands.
752       To test the installation, open a DOS box (run either "cmd" or
753       "command" from the Start menu's "Run..." menu option), change to
754       the directory you installed the executables into, and run:
756           C:\test>svn co http://svn.collab.net/repos/svn/trunk svn
758       This will get the latest Subversion sources and put them into the
759       "svn" subdirectory.
761       If using a self-extracting .exe file, just run it instead of
762       unzipping it, to install Subversion.
764   E.  Building the Latest Source under Windows
765       ----------------------------------------
767   E.1 Prerequisites
769       * Visual Studio 6 and service pack. It can be built with later versions
770         of Visual Studio (Visual Studio.NET 2002, 2003, 2005 and Visual C++
771         Express 2005) but these instructions assume VS6.
772       * A recent Windows SDK if you are using Visual Studio 6.
773         You can get it from MSDN if you have it or from
774         http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ if you
775         don't.
776       * Python 2.2 or higher, downloaded from http://www.python.org/ which is
777         used to generate the project files.
778       * Perl 5.8 or higher from http://www.activestate.com/
779       * Awk (from http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe) is
780         needed to compile Apache or APR.  Note that this is the actual awk
781         program, not an installer - just rename it to awk.exe and it is
782         ready to use.
783       * Neon 0.26.1 or higher, downloaded from
784         http://www.webdav.org/neon/neon-0.26.1.tar.gz which is required
785         for building the client components.  Neon is included in the zip file
786         distribution.  (0.25.0+ compiles, but does not properly support all
787         HTTP auth types.)
788       * Apache apr, apr-util, and apr-iconv libraries, version 0.9.12.
789         Included in both the Subversion dependencies ZIP file and the
790         Apache 2.058 source zip.  If you are building from a Subversion
791         checkout and have not downloaded Apache 2, then get these 3
792         libraries from http://www.apache.org/dist/apr/.  Note that
793         the 1.x APR releases are not yet functional with Subversion --
794         see the note on '[Optional] Apache 2 source' below.
795       * ZLib 1.2 or higher is required and is included in the Subversion
796         dependencies zip file or can be obtained from http://www.zlib.org
797       * Either a Subversion client binary from http://subversion.tigris.org/ to
798         do the initial checkout of the Subversion source or the zip file
799         source distribution. See the section "Bootstrapping from a Zip or
800         Installer File under Windows" above for more.
801       * A means of unpacking the files, e.g., WinZIP or similar.
803       Additional Options
805       * [Optional] Apache 2 source, downloaded from
806         http://httpd.apache.org/download.cgi, these instructions assume
807         version 2.0.58.  This is only needed for building the Subversion
808         server Apache modules.  Note that although Subversion will compile
809         against Apache 2.2.3 and APR 1.2.7, there is a bug that causes
810         runtime failures with Subversion on Windows.  The fix is included in
811         APR 1.2.8 and will be bundled in the next HTTP Server release
812         (likely to be 2.2.4).
813       * [Optional] Apache 2 msi install file, also from
814         http://httpd.apache.org/download.cgi (required for running the
815         tests).  Only needed for testing the server dso modules and if
816         you are using Visual Studio 6.
817         Note that if you are not using Visual Studio 6 (and you want to
818         run and test the server modules) then you must rebuild Apache
819         from source -- do not use the stock MSI since mixing C runtime
820         libraries is not supported.
821       * [Optional] Berkeley DB for backend support of the server
822         components -- versions 4.3.27 and 4.4.20 are available from
823         http://subversion.tigris.org/servlets/ProjectDocumentList as
824         db-4.3.27-win32.zip and db-4.4.20-win32.zip.
825         For more information see Section I.5.
826       * [Optional] Openssl 0.9.7f or higher can be obtained from
827         http://www.openssl.org/source/openssl-0.9.7f.tar.gz
828       * [Optional] A modified version of GNU libintl, called
829         svn-win32-libintl.zip, can be used for displaying localized
830         messages. Available at:
831         http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627
832       * [Optional] GNU gettext for generating message catalog (.mo)
833         files from message translations. You can get the latest
834         binaries from http://gnuwin32.sourceforge.net/. You'll need the
835         binaries (gettext-0.14.1-bin.zip) and dependencies
836         (gettext-0.14.1-dep.zip).
837       * [Optional] An assembler, e.g., MASM32 from http://www.masm32.com/
838         or nasm which is available from
839         http://www.kernel.org/pub/software/devel/nasm/binaries/win32/
841   E.2 Notes
843       The Neon library supports secure connections with OpenSSL and
844       on-the-wire compression with zlib. If you want to use the
845       secure connections feature, you should pass the option
846       "--with-openssl" to the gen-make.py script. See Section I.11 for
847       more details.
849       If you are installing under Win9x or NT4 (and do not have Internet
850       Explorer 5 or later) and svn.exe doesn't run, try installing
851       shfolder.dll from here (wrapped url):
853           http://download.microsoft.com/download/platformsdk/Redist/
854           5.50.4027.300/W9XNT4/EN-US/shfinst.EXE
856   E.3 Preparation
858       This section describes how to unpack the files to make a build tree.
860       * Make a directory SVN and cd into it.
861       * Either checkout Subversion:
863           svn co http://svn.collab.net/repos/svn/trunk/ src-trunk
865         or unpack the zip file distribution and rename the directory to
866         src-trunk.
868       * Install Visual Studio 6. You either have to tell the installer to
869         register environment variables or run VCVARS32.BAT before building
870         anything.  If you are using a newer Visual Studio, use the
871         'Visual Studio 200x Command Prompt' on the Start menu.
872       * Install and register a recent Windows Core SDK if you are using
873         Visual Studio 6. This is a quote from the Microsoft February 2003
874         SDK documentation:
876        "To register the SDK bin, include, and library directories with
877         Microsoft Visual Studio® version 6.0 and Visual Studio .NET,
878         click Start, point to All Programs, point to Microsoft Platform
879         SDK February 2003, point to Visual Studio Registration, and then
880         click Register PSDK Directories with Visual Studio. This
881         registration process places the SDK bin, include, and library
882         directories at the beginning of the search paths, which ensures
883         that the latest headers and libraries are used when building
884         applications in the IDE. Note that for Visual Studio 6.0
885         integration to succeed, Visual Studio 6.0 must run at least once
886         before you select Register PSDK Directories with Visual
887         Studio. Also note that when this option is run, the IDEs should
888         not be running."
890       * Install Python and add it to your path
891       * Install Perl (it should add itself to the path)
892       * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
893         the directory containing it (e.g. SVN\awk) to the path.
894       * Install Apache 2 using the msi file if you are going to test the
895         server dso modules and are using Visual Studio 6.  You must build
896         and install it from source if you are not using Visual Studio 6 and
897         want to build and/or test the server modules.
898       * If you checked out Subversion from the repository then extract neon
899         into SVN\src-trunk\neon, the zip file source distribution includes
900         neon.
901       * If you want BDB backend support, extract the Berkeley DB files
902         into SVN\src-trunk\db4-win32. It's a good idea to add
903         SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find
904         the Berkeley DB DLLs.
906         [NOTE: This binary package of Berkeley DB is provided for
907             convenience only. Please don't address questions about
908             Berkeley DB that aren't directly related to using Subversion
909             to the project mailing list.]
911         If you build Berkeley DB from the source, you will have to copy
912         the file db-x.x.x\build_win32\db.h to
913         SVN\src-trunk\db4-win32\include, and all the import libraries to
914         SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in
915         your path.
917       * If you want to build the server modules, extract Apache source into
918         SVN\httpd-2.x.x.
919       * If you are building from a checkout of Subversion, and you are NOT
920         building Apache, then you will need the APR libraries.  Depending
921         on how you got your version of APR, either:
922           - Extract the APR, APR-util and APR-iconv source distributions into
923             SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively.
924         Or:
925           - Extract the apr, apr-util and apr-iconv directories from the
926             srclib folder in the Apache httpd source into SVN\apr,
927             SVN\apr-util, and SVN\apr-iconv respectively.
928       * Extract the ZLib sources into SVN\zlib if you are not using the zlib
929         included in the dependencies zip file.
930       * If you want secure connection (https) client support, extract openssl
931         into SVN\openssl-x.x.x
932       * If you want localized message support, extract svn-win32-libintl.zip
933         into SVN\svn-win32-libintl and extract gettext-x.x.x-bin.zip and
934         gettext-x.x.x-dep.zip into SVN\gettext-x.x.x-bin.
935         Add SVN\gettext-x.x.x-bin\bin to your path.
936       * [Optional] Extract MASM32 (only the ML.EXE and ML.ERR files) into
937         SVN\asm (or extract nasm into SVN\asm) and put it in your path.
939   E.4 Building the Binaries
941       To build the binaries either follow the instructions here or use
942       build\win32\vc6-build.bat.in after editing its default paths to match
943       yours and saving it as vc6-build.bat.  The vc6-build.bat does a full build
944       using all options so it requires Apache 2 source and the other optional
945       components.
947       Start in the SVN directory you created.
949       Set up the environment (commands should be one line even if wrapped here).
951       C:>set VER=trunk
952       C:>set DIR=trunk
953       C:>set DRIVE=C
954       C:>set PYTHONDIR=C:\Python22
955       C:>set AWKDIR=C:\SVN\Awk
956       C:>set ASMDIR=C:\SVN\asm
957       C:>set SDKINC=C:\Program Files\Microsoft SDK\include
958       C:>set SDKLIB=C:\Program Files\Microsoft SDK\lib
959       C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin
960       C:>PATH=%PATH%;%DRIVE%:\SVN\src-%DIR%\db4-win32;%ASMDIR%;
961               %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN%
962       C:>set INCLUDE=%SDKINC%;%INCLUDE%
963       C:>set LIB=%SDKLIB%;%LIB%
965       OpenSSL
967       C:>cd openssl-0.9.7f
968       C:>perl Configure VC-WIN32
969   [*] C:>call ms\do_masm
970       C:>nmake -f ms\ntdll.mak
971       C:>cd out32dll
972       C:>call ..\ms\test
973       C:>cd ..\..
975       *Note: Use "call ms\do_nasm" of you have nasm instead of MASM, or
976              "call ms\do_ms" if you don't have an assembler.
978       Apache 2
980       This step is only required for building the server dso modules.
982       The Subversion gen-make.py script must be run before building Apache or
983       Apache and Subversion will be running incompatible versions of apr.
985       C:>cd src-%DIR%
986       C:>python gen-make.py -t dsp --with-httpd=..\httpd-2.0.58
987          --with-berkeley-db=db4-win32 --with-openssl=..\openssl-0.9.7f
988          --with-zlib=..\zlib --with-libintl=..\svn-win32-libintl
989       C:>cd ..
990       C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
991       C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
993       Subversion
995       Things to note:
997       * If you don't want to build mod_dav_svn, omit the --with-httpd
998         option.  The zip file source distribution contains apr, apr-util and
999         apr-iconv in the default build location. If you have downloaded the
1000         apr files yourself you will have to tell the generator where to find
1001         the APR libraries; the options are --with-apr, --with-apr-util and
1002         --with-apr-iconv.
1003       * If you would like a debug build substitute Debug for Release in
1004         the msdev commands.
1005       * There have been rumors that Subversion on Win32 can be built
1006         using the latest cygwin, you probably don't want the zip file source
1007         distribution though. ymmv.
1008       * The /USEENV switch to msdev makes it take notice of the INCLUDE and
1009         LIB environment variables, it also makes it ignore its own lib and
1010         include settings so you need to have the Windows SDK lib and include
1011         directories in the LIB and INCLUDE environment variables.  Do *not*
1012         use this switch when starting up the msdev Visual environment.  If you
1013         wish to build in the Visual environment the SDK lib and include
1014         directories must be in the Tools/Options/Directories settings (if you
1015         followed the 'Register the SDK with Visual Studio 6' instructions
1016         above this has been done for you).
1017       * If you are using Visual Studio .NET change -t dsw into -t vcproj and
1018         add the --vsnet-version=200x option on the gen-make.py command.
1019         In this case you will also have to distribute the C runtime dll with
1020         the binaries.  Also, since Apache/APR do not provide .vcproj files,
1021         you will need to convert the Apache/APR .dsp files to .vcproj files
1022         with Visual Studio before building -- just open the Apache .dsw file
1023         and answer 'Yes To All' when the conversion dialog pops up, or you
1024         can open the individual .dsp files and convert them one at a time.
1025         The Apache/APR projects required by Subversion are:
1026         apr-util\libaprutil.dsp, apr\libapr.dsp,
1027         apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp,
1028         apr-util\uri\gen_uri_delims.dsp (for APR 0.9.x),
1029         apr-iconv\ccs\libapriconv_ccs_modules.dsp, and
1030         apr-iconv\ces\libapriconv_ces_modules.dsp.
1031       * If the server dso modules are being built and tested Apache must not
1032         be running or the copy of the dso modules will fail.
1034       C:>cd src-%DIR%
1036       If Apache 2 has been built and the server modules are required then
1037       gen-make.py will already have been run. If the source is from the zip
1038       file, Apache 2 has not been built so gen-make.py must be run:
1040       C:>python gen-make.py -t dsp --with-berkeley-db=db4-win32
1041           --with-openssl=..\openssl-0.9.7f --with-zlib=..\zlib
1042           --with-libintl=..\svn-win32-libintl
1044       Then build subversion:
1046       C:>msdev subversion_msvc.dsw /USEENV /MAKE "__ALL_TESTS__ - Win32 Release"
1047       C:>cd ..
1049       Or, with Visual C++.NET 2002, 2003, 2005:
1051       C:>devenv subversion_vcnet.sln /build "Release" /project "__ALL_TESTS__"
1052       C:>cd ..
1054       Or, with Visual C++ Express 2005:
1056       C:>msbuild subversion_vcnet.sln /t:__ALL_TESTS__ /p:Configuration=Release
1057       C:>cd ..
1059       The binaries have now been built.
1061   E.5 Packaging the binaries
1063       You now need to copy the binaries ready to make the release zip
1064       file. You also need to do this to run the tests as the new binaries
1065       need to be in your path. You can use the build/win32/make_dist.py
1066       script in the Subversion source directory to do that.
1068       [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.]
1070   E.6 Testing the Binaries
1071       [TBD: It's been a long, long while since it was necessary to move
1072             binaries around for testing. win-tests.py does that automagically.
1073             Fix this section accordingly, and probably reorder, putting
1074             the packaging at the end.]
1076       The build process creates the binary test programs but it does not
1077       copy the client tests into the release test area.
1079       C:>cd src-%DIR%
1080       C:>mkdir Release\subversion\tests\cmdline
1081       C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline
1083       If the server dso modules  have been built then copy the dso files and
1084       dlls into the Apache modules directory.
1086       C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEDIR%"\modules
1087       C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so
1088          "%APACHEDIR%"\modules
1089       C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin"
1090       C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin"
1091       C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin"
1092       C:>cd ..
1094       Put the svn-win32-trunk\bin directory at the start of your path so
1095       you run the newly built binaries and not another version you might
1096       have installed.
1098       Then run the client tests:
1100       C:>PATH=%DRIVE%:\SVN\svn-win32-%VER%\bin;%PATH%
1101       C:>cd src-%DIR%
1102       C:>python win-tests.py -c -r -v
1104       If the server dso modules were built configure Apache to use the
1105       mod_dav_svn and mod_authz_svn modules by making sure these lines appear
1106       uncommented in httpd.conf:
1108         LoadModule dav_module         modules/mod_dav.so
1109         LoadModule dav_fs_module      modules/mod_dav_fs.so
1110         LoadModule dav_svn_module     modules/mod_dav_svn.so
1111         LoadModule authz_svn_module   modules/mod_authz_svn.so
1113       And further down the file add location directives to point to the
1114       test repositories. Change the paths to the SVN directory you created
1115       (paths should be on one line even if wrapped here):
1117         <Location /svn-test-work/repositories>
1118          DAV svn
1119          SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/
1120                        svn-test-work/repositories
1121         </Location>
1123         <Location /svn-test-work/local_tmp/repos>
1124          DAV svn
1125          SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/
1126                  svn-test-work/local_tmp/repos
1127         </Location>
1129       Then restart Apache and run the tests:
1131       C:>python win-tests.py -c -r -v -u http://localhost
1132       C:>cd ..
1134 III.  BUILDING A SUBVERSION SERVER
1135       ============================
1137       Subversion has two servers you can choose from:  svnserve and
1138       Apache.  svnserve is a small, lightweight server program that is
1139       automatically compiled when you build Subversion's source.  Apache
1140       is a more heavyweight HTTP server, but tends to have more features.
1142       This section primarily focuses on how to build Apache and the
1143       accompanying mod_dav_svn server module for it.  If you plan to use
1144       svnserve instead, jump right to section E for a quick explanation.
1147   A.  Setting Up Apache
1148       -----------------
1150       (Following the BOOTSTRAPPING FROM RPM procedures above will install and
1151       build the latest Subversion server for Linux RedHat 7.1, 7.2, and PPC
1152       Linux systems *IF* the apache-devel-2.0.41 or greater package is already
1153       installed when the SUBVERSION RPM is built.)
1156       1.  Obtaining and Installing Apache 2
1158       Subversion tries to compile against the latest released version
1159       of Apache httpd 2.X.  The easiest thing for you to do is download
1160       a source tarball of the latest release and unpack that.
1163         ****************************************************************
1164         **    IMPORTANT ISSUE ABOUT APACHE VERSIONS:  READ THIS.      **     
1165         **                                                            ** 
1166         ****************************************************************
1167         |                                                              |
1168         | First, be sure to read the APR version warning box, back in  |
1169         | section I.C.1, which explains that APR 0.9.x and 1.X are     |
1170         | binary-incompatible.                                         |
1171         |                                                              |
1172         |    Apache HTTPD 2.0 uses APR 0.9.x.                          |
1173         |    Apache HTTPD 2.2 uses APR 1.2.x.                          |
1174         |                                                              |
1175         | We recommend using the latest Apache.  However, whatever     |
1176         | version you choose, you *must* ensure that Subversion        |
1177         | and Apache are using the same version of APR.  If you don't, |
1178         | things will segfault and break.                              |
1179         |______________________________________________________________|
1180                                                                         
1182       If you have questions about the Apache httpd 2.0 build, please consult
1183       the httpd install documentation:
1185           http://httpd.apache.org/docs-2.0/install.html
1187       At the top of the httpd tree:
1189           $ ./buildconf
1190           $ ./configure --enable-dav --enable-so --enable-maintainer-mode
1192       The first arg says to build mod_dav.
1194       The second arg says to enable shared module support which is needed
1195       for a typical compile of mod_dav_svn (see below).
1197       The third arg says to include debugging information.  If you
1198       built Subversion with --enable-maintainer-mode, then you should
1199       do the same for Apache; there can be problems if one was
1200       compiled with debugging and the other without.
1202       Note: if you have multiple db versions installed on your system,
1203       Apache might link to a different one than Subversion, causing
1204       failures when accessing the repository through Apache.  To prevent
1205       this from happening, you have to tell Apache which db version to
1206       use and where to find db.  Add --with-dbm=db4 and
1207       --with-berkeley-db=/usr/local/BerkeleyDB.4.2 to the configure
1208       line.  Make sure this is the same db as the one Subversion uses.
1209       This note assumes you have installed Berkeley DB 4.2.52
1210       at its default locations.  For more info about the db requirement,
1211       see section I.5.
1213       You may also want to include other modules in your build. Add
1214       --enable-ssl to turn on SSL support, and --enable-deflate to turn on
1215       compression support, for example.  Consult the Apache documentation
1216       for more details.
1218       All instructions below assume you configured Apache to install
1219       in its default location, /usr/local/apache2/; substitute
1220       appropriately if you chose some other location.
1222       Compile and install apache:
1224           $ make && make install
1227   B.  Making and Installing the Subversion Apache Server Module
1228       ---------------------------------------------------------
1230       Go back into your subversion working copy and run ./autogen.sh if
1231       you need to.  Then, assuming Apache httpd 2.0 is installed in the
1232       standard location, run:
1234           $ ./configure
1236       Note: do *not* configure subversion with "--disable-shared"!
1237       mod_dav_svn *must* be built as a shared library, and it will
1238       look for other libsvn_*.so libraries on your system.
1240       If you see a warning message that the build of mod_dav_svn is
1241       being skipped, this may be because you have Apache httpd 2.X
1242       installed in a non-standard location.  You can use the
1243       "--with-apxs=" option to locate the apxs script:
1245           $ ./configure --with-apxs=/usr/local/apache2/bin/apxs
1247       Note: it *is* possible to build mod_dav_svn as a static library
1248       and link it directly into Apache. Possible, but painful. Stick
1249       with the shared library for now; if you can't, then ask.
1251           $ rm /usr/local/lib/libsvn*
1253       If you have old subversion libraries sitting on your system,
1254       libtool will link them instead of the `fresh' ones in your tree.
1255       Remove them before building subversion.
1257           $ make clean && make && make install
1259       After the make install, the Subversion shared libraries are in
1260       /usr/local/lib/.  mod_dav_svn.so should be installed in
1261       /usr/local/apache2/modules/.
1264       Section II.E explains how to build the server on Windows.
1267   C.  Configuring Apache for Subversion
1268       ---------------------------------
1270       The following section is an abbreviated version of the
1271       information in the Subversion Book
1272       (http://svnbook.red-bean.com).  Please read chapter 6 for more
1273       details.
1275       The following assumes you have already created a repository.
1276       For documentation on how to do that, see README.
1278       The following also assumes that you have modified
1279       /usr/local/apache2/conf/httpd.conf to reflect your setup.
1280       At a minimum you should look at the User, Group and ServerName
1281       directives.  Full details on setting up apache can be found at:
1282       http://httpd.apache.org/docs-2.0/
1284       First, your httpd.conf needs to load the mod_dav_svn module.
1285       Subversion's 'make install' target should automatically add this
1286       line for you.  But if apache gives you an error like "Unknown
1287       DAV provider: svn", then you may want to verify that this line
1288       exists in your httpd.conf:
1290          LoadModule dav_svn_module     modules/mod_dav_svn.so
1292       NOTE: if you built mod_dav as a dynamic module as well, make sure
1293       the above line appears after the one that loads mod_dav.so.
1295       Next, add this to the *bottom* of your httpd.conf:
1297       <Location /svn/repos>
1298           DAV svn
1299           SVNPath /absolute/path/to/repository
1300       </Location>
1302       This will give anyone unrestricted access to the repository.  If
1303       you want limited access, read or write, you add these lines to
1304       the Location block:
1306           AuthType Basic
1307           AuthName "Subversion repository"
1308           AuthUserFile /my/svn/user/passwd/file
1310       And:
1312           a) For a read/write restricted repository:
1314              Require valid-user
1316           b) For a write restricted repository:
1318              <LimitExcept GET PROPFIND OPTIONS REPORT>
1319                  Require valid-user
1320              </LimitExcept>
1322           c) For separate restricted read and write access:
1324              AuthGroupFile /my/svn/group/file
1326              <LimitExcept GET PROPFIND OPTIONS REPORT>
1327                  Require group svn_committers
1328              </LimitExcept>
1330              <Limit GET PROPFIND OPTIONS REPORT>
1331                  Require group svn_committers
1332                  Require group svn_readers
1333              </Limit>
1335       These are only a few simple examples.  For a complete tutorial
1336       on Apache access control, please consider taking a look at the
1337       tutorials found under "Security" on the following page:
1338       http://httpd.apache.org/docs-2.0/misc/tutorials.html
1340       In order for 'svn cp' to work (which is actually implemented as a
1341       DAV COPY command), mod_dav needs to be able to determine the
1342       hostname of the server.  A standard way of doing this is to use
1343       Apache's ServerName directive to set the server's hostname.  Edit
1344       your /usr/local/apache2/conf/httpd.conf to include:
1346       ServerName svn.myserver.org
1348       If you are using virtual hosting through Apache's NameVirtualHost
1349       directive, you may need to use the ServerAlias directive to specify
1350       additional names that your server is known by.
1352       If you have configured mod_deflate to be in the server, you can enable
1353       compression support for your repository by adding the following line
1354       to your Location block:
1356           SetOutputFilter DEFLATE
1359       NOTE: If you are unfamiliar with an Apache directive, or not exactly
1360       sure about what it does, don't hesitate to look it up in the
1361       documentation: http://httpd.apache.org/docs-2.0/mod/directives.html.
1363       NOTE: Make sure that the user 'nobody' (or whatever UID the
1364       httpd process runs as) has permission to read and write the
1365       Berkeley DB files!  This is a very common problem.
1368   D.  Running and Testing
1369       -------------------
1371       Fire up apache 2:
1373           $ /usr/local/apache2/bin/apachectl stop
1374           $ /usr/local/apache2/bin/apachectl start
1376       Check /usr/local/apache2/logs/error_log to make sure it started
1377       up okay.
1379       Try doing a network checkout from the repository:
1381           $ svn co http://localhost/svn/repos wc
1383       The most common reason this might fail is permission problems
1384       reading the repository db files.  If the checkout fails, make
1385       sure that the httpd process has permission to read and write to
1386       the repository.  You can see all of mod_dav_svn's complaints in
1387       the Apache error logfile, /usr/local/apache2/logs/error_log.
1389       To run the regression test suite for networked Subversion, see
1390       the instructions in subversion/tests/cmdline/README.
1391       For advice about tracing problems, see "Debugging the server" in
1392       www/hacking.html.
1395   E.  Alternative:  'svnserve' and ra_svn
1396       -----------------------------------
1398       An alternative network layer is libsvn_ra_svn (on the client
1399       side) and the 'svnserve' process on the server.  This is a
1400       simple network layer that speaks a custom protocol over plain
1401       TCP (documented in libsvn_ra_svn/protocol):
1403          $ svnserve -d     # becomes a background daemon
1404          $ svn checkout svn://localhost/usr/local/svn/repository
1406       You can use the "-r" option to svnserve to set a logical root
1407       for repositories, and the "-R" option to restrict connections to
1408       read-only access.  ("Read-only" is a logical term here; svnserve
1409       still needs write access to the database in this mode, but will
1410       not allow commits or revprop changes.)
1412       'svnserve' has built-in CRAM-MD5 authentication (so you can use
1413       non-system accounts), and can also be tunneled over SSH (so you
1414       can use existing system accounts).  It's also capable of using
1415       Cyrus SASL if libsasl2 is detected at ./configure time.  Please
1416       read chapter 6 in the Subversion Book
1417       (http://svnbook.red-bean.com) for details on these features.
1421 IV.   PLATFORM-SPECIFIC ISSUES
1422       ========================
1424   A.  Windows XP
1425       ----------
1427       There is an error in the Windows XP TCP/IP stack which causes
1428       corruption in certain cases.  This problem is exposed only
1429       through ra_dav.
1431       The root of the matter is caused by duplicating file handles
1432       between parent and child processes.  The httpd Apache group
1433       explains this a lot better:
1435           http://www.apache.org/dist/httpd/binaries/win32/#xpbug
1437       And there's an item about this in the Subversion FAQ:
1439           http://subversion.tigris.org/faq.html#windows-xp-server
1441       The only known workaround for now is to update to Windows XP
1442       SP1 (or higher).
1445   B.  Mac OS X
1446       --------
1448       [TBD: Describe BDB 4.0.x problem]
1452 V.    PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA)
1453       ========================================================
1454   
1455       For Python, Perl and Ruby bindings, see the file     
1457           ./subversion/bindings/swig/INSTALL
1459       For Java bindings, see the file
1461           ./subversion/bindings/javahl/README