2013-06-18 02:07:41 +00:00
|
|
|
|
======================================
|
|
|
|
|
INSTALLING SUBVERSION
|
|
|
|
|
A Quick Guide
|
|
|
|
|
======================================
|
|
|
|
|
|
2016-04-30 10:35:42 +00:00
|
|
|
|
$LastChangedDate: 2015-12-12 04:00:43 +0000 (Sat, 12 Dec 2015) $
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contents:
|
|
|
|
|
|
|
|
|
|
I. INTRODUCTION
|
|
|
|
|
A. Audience
|
|
|
|
|
B. Dependency Overview
|
|
|
|
|
C. Dependencies in Detail
|
|
|
|
|
D. Documentation
|
|
|
|
|
|
|
|
|
|
II. INSTALLATION
|
2015-10-12 08:54:49 +00:00
|
|
|
|
A. Building from a Tarball
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
http://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.
|
|
|
|
|
|
|
|
|
|
* libserf (OPTIONAL for client)
|
|
|
|
|
|
|
|
|
|
The 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 libserf) in addition to unencrypted http:// URLs.
|
|
|
|
|
To use SSL with Subversion's WebDAV server, Apache needs to be
|
|
|
|
|
compiled with OpenSSL as well.
|
|
|
|
|
|
|
|
|
|
* 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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
time. The Berkeley DB back-end has been deprecated and
|
|
|
|
|
is not recommend.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* libmagic (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* Googlemock aka Gmock (OPTIONAL)
|
|
|
|
|
|
|
|
|
|
This optional package is used by the tests for Subversions'
|
|
|
|
|
C++ bindings.
|
|
|
|
|
|
|
|
|
|
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
1. Apache Portable Runtime 1.3 or newer (REQUIRED)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
http://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
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
http://www.zlib.net/
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
5. Serf library 1.3.4 or newer (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
If you want your client to be able to speak to an Apache
|
|
|
|
|
server (via a http:// or https:// URL), you must link against
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Serf can be obtained via your system's package distribution
|
|
|
|
|
system or directly from http://code.google.com/p/serf/.
|
|
|
|
|
|
|
|
|
|
For more information on serf and Subversion's ra_serf, see the file
|
|
|
|
|
subversion/libsvn_ra_serf/README.
|
|
|
|
|
|
|
|
|
|
6. OpenSSL (OPTIONAL)
|
|
|
|
|
|
|
|
|
|
### needs some updates. I think serf automagically handles
|
|
|
|
|
### finding OpenSSL, but we may need more docco here. and w.r.t
|
|
|
|
|
### zlib.
|
|
|
|
|
|
|
|
|
|
The Serf library has support for SSL encryption by relying on the
|
|
|
|
|
OpenSSL library.
|
|
|
|
|
|
|
|
|
|
a. Using OpenSSL on the client through Serf
|
|
|
|
|
|
|
|
|
|
On Unix systems, to build 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 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.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
b. Using OpenSSL on the Apache server
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
http://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/technology/software/products/berkeley-db/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/
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
9. Apache Web Server 2.2.X or newer (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
(http://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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
10. Python 2.7 or newer (http://www.python.org/) (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
If you want to run "make check" or build from the latest source
|
2015-10-12 08:54:49 +00:00
|
|
|
|
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
|
2013-06-18 02:07:41 +00:00
|
|
|
|
system.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
Note that Python 3.x is not supported and most likely won't work.
|
|
|
|
|
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
12. SQLite (REQUIRED)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
Subversion requires SQLite version 3.7.12 or above. You can meet this
|
|
|
|
|
dependency several ways:
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* 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:
|
|
|
|
|
|
|
|
|
|
http://www.sqlite.org/download.html
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
13. pkg-config (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
Subversion uses pkg-config to find appropriate options used
|
|
|
|
|
at build time.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
14. D-Bus (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
15. Qt 4 (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
16. KDELibs 4 (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
17. GLib 2 (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
18. GNOME Keyring (Unix only, OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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`.
|
|
|
|
|
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
19. Ctypesgen (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
20. libmagic (OPTIONAL)
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
21. Googlemock (OPTIONAL)
|
|
|
|
|
|
|
|
|
|
Googlemock can be installed and built in-tree by invoking
|
|
|
|
|
|
|
|
|
|
$ ./get-dep.sh gmock
|
|
|
|
|
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
|
|
|
|
============
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
A. Building from a Tarball
|
2013-06-18 02:07:41 +00:00
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
1. Building from a Tarball
|
|
|
|
|
|
|
|
|
|
Download the most recent distribution tarball from:
|
|
|
|
|
|
|
|
|
|
http://subversion.apache.org/download/
|
|
|
|
|
|
|
|
|
|
Unpack it, and use the standard GNU procedure to compile:
|
|
|
|
|
|
|
|
|
|
$ ./configure
|
|
|
|
|
$ make
|
|
|
|
|
# make install
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
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".
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
told where to get them from. (See the 'Dependency Overview' in
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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 (*.zip) or self-extracting installer
|
|
|
|
|
(*-setup.exe) file from:
|
|
|
|
|
|
|
|
|
|
http://subversion.apache.org/packages#windows
|
|
|
|
|
|
|
|
|
|
For a Zip file, run your unzipping utility (WinZIP, ZipGenius,
|
|
|
|
|
UltimateZIP, FreeZIP, whatever) and extract the DLLs and EXEs to
|
|
|
|
|
a directory of your choice. Included in the download is the SVN
|
|
|
|
|
client, the SVNADMIN administration tool, and the SVNLOOK
|
|
|
|
|
reporting tool.
|
|
|
|
|
|
|
|
|
|
Note that if you need support for non-English locales you'll have
|
|
|
|
|
to set the APR_ICONV_PATH environment variable to the path of the
|
|
|
|
|
iconv directory in the folder that contains the Subversion install.
|
|
|
|
|
|
|
|
|
|
You may also 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
|
|
|
|
|
|
|
|
|
|
* Visual Studio 6 and service pack. It can be built with later versions
|
2015-10-12 08:54:49 +00:00
|
|
|
|
of Visual Studio (Visual Studio.NET 2005-2015, Visual C++ Express
|
|
|
|
|
2005-2010, Visual Studio Express 2012-2013 and Visual Studio Community
|
|
|
|
|
2013-2015) but these instructions assume VS6.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* A recent Windows SDK. (Not needed with Visual Studio 2005 and later)
|
|
|
|
|
If you are using Visual Studio 6, you need the latest SDK which
|
2015-10-12 08:54:49 +00:00
|
|
|
|
is compatible with VC6, which is the one from February 2003.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
You can get it from MSDN:
|
2015-10-12 08:54:49 +00:00
|
|
|
|
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk
|
|
|
|
|
* Python 2.7 or higher, downloaded from http://www.python.org/ which is
|
2013-06-18 02:07:41 +00:00
|
|
|
|
used to generate the project files.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
Note that Python 3.x is not supported (yet).
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* Perl 5.8 or higher from http://www.activestate.com/
|
|
|
|
|
* Awk (from http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is
|
|
|
|
|
needed to compile Apache or APR. 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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
1.3 or later. Included in both the Subversion dependencies ZIP file
|
2013-06-18 02:07:41 +00:00
|
|
|
|
and the Apache 2 source zip. If you are building from a Subversion
|
|
|
|
|
checkout and have not downloaded Apache 2, then get these 3 libraries
|
|
|
|
|
from http://www.apache.org/dist/apr/.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* SQLite 3.7.12 or higher from http://www.sqlite.org/download.html
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* ZLib 1.2 or higher is required and is included in the Subversion
|
2015-10-12 08:54:49 +00:00
|
|
|
|
dependencies zip file or can be obtained from http://www.zlib.net/
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* Either a Subversion client binary from http://subversion.apache.org/ to
|
|
|
|
|
do the initial checkout of the Subversion source or the zip file
|
|
|
|
|
source distribution. See the section "Bootstrapping from a Zip or
|
|
|
|
|
Installer File under Windows" above for more.
|
|
|
|
|
* A means of unpacking the files, e.g., WinZIP or similar.
|
|
|
|
|
|
|
|
|
|
Additional Options
|
|
|
|
|
|
|
|
|
|
* [Optional] Apache 2 source, downloaded from
|
|
|
|
|
http://httpd.apache.org/download.cgi, these instructions assume
|
|
|
|
|
version 2.0.58. This is only needed for building the Subversion
|
2015-10-12 08:54:49 +00:00
|
|
|
|
server Apache modules. ### FIXME Apache 2.2 or greater required.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* [Optional] Apache 2 msi install file, also from
|
|
|
|
|
http://httpd.apache.org/download.cgi (required for running the
|
|
|
|
|
tests). Only needed for testing the server dso modules and if
|
|
|
|
|
you are using Visual Studio 6.
|
|
|
|
|
Note that if you are not using Visual Studio 6 (and you want to
|
|
|
|
|
run and test the server modules) then you must rebuild Apache
|
|
|
|
|
from source -- do not use the stock MSI since mixing C runtime
|
|
|
|
|
libraries is not supported.
|
|
|
|
|
* [Optional] Berkeley DB for backend support of the server
|
|
|
|
|
components -- versions 4.3.27 and 4.4.20 are available from
|
|
|
|
|
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
|
|
|
|
|
as db-4.3.27-win32.zip and db-4.4.20-win32.zip.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
For more information see Section I.C.7.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* [Optional] Openssl 0.9.7f or higher can be obtained from
|
|
|
|
|
http://www.openssl.org/source/openssl-0.9.7f.tar.gz
|
|
|
|
|
* [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).
|
|
|
|
|
* [Optional] An assembler, e.g., MASM32 from http://www.masm32.com/
|
|
|
|
|
or nasm which is available from
|
|
|
|
|
http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
|
|
|
|
|
|
|
|
|
|
E.2 Notes
|
|
|
|
|
|
|
|
|
|
The 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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
"--with-openssl" to the gen-make.py script. See Section I.C.6 for
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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,
|
2015-10-12 08:54:49 +00:00
|
|
|
|
use the 'Visual Studio 20xx Command Prompt' on the Start menu.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* Install and register a recent Windows Core SDK if you are using
|
|
|
|
|
Visual Studio 6. This is a quote from the Microsoft February 2003
|
|
|
|
|
SDK documentation:
|
|
|
|
|
|
|
|
|
|
"To register the SDK bin, include, and library directories with
|
|
|
|
|
Microsoft Visual Studio® version 6.0 and Visual Studio .NET,
|
|
|
|
|
click Start, point to All Programs, point to Microsoft Platform
|
|
|
|
|
SDK February 2003, point to Visual Studio Registration, and then
|
|
|
|
|
click Register PSDK Directories with Visual Studio. This
|
|
|
|
|
registration process places the SDK bin, include, and library
|
|
|
|
|
directories at the beginning of the search paths, which ensures
|
|
|
|
|
that the latest headers and libraries are used when building
|
|
|
|
|
applications in the IDE. Note that for Visual Studio 6.0
|
|
|
|
|
integration to succeed, Visual Studio 6.0 must run at least once
|
|
|
|
|
before you select Register PSDK Directories with Visual
|
|
|
|
|
Studio. Also note that when this option is run, the IDEs should
|
|
|
|
|
not be running."
|
|
|
|
|
|
|
|
|
|
* Install Python and add it to your path
|
|
|
|
|
* Install Perl (it should add itself to the path)
|
|
|
|
|
* 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.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* [Optional] Install Apache 2 using the msi file if you are going to test
|
|
|
|
|
the server dso modules and are using Visual Studio 6. You must build
|
2013-06-18 02:07:41 +00:00
|
|
|
|
and install it from source if you are not using Visual Studio 6 and
|
|
|
|
|
want to build and/or test the server modules.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* [Optional] If you checked out Subversion from the repository and want
|
|
|
|
|
to build Subversion with http/https access support then install the
|
|
|
|
|
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
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* [Optional] If you want to build the server modules, extract Apache
|
|
|
|
|
source into SVN\httpd-2.x.x.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* 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.
|
|
|
|
|
* Extract the ZLib sources into SVN\zlib if you are not using the zlib
|
|
|
|
|
included in the dependencies zip file.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* [Optional] If you want secure connection (https) client support, or if
|
|
|
|
|
you are building with enabled support for serf extract openssl into
|
|
|
|
|
SVN\openssl-x.x.x
|
|
|
|
|
* [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.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
Add SVN\gettext-x.x.x-bin\bin to your path.
|
|
|
|
|
* [Optional] Extract MASM32 (only the ML.EXE and ML.ERR files) into
|
|
|
|
|
SVN\asm (or extract nasm into SVN\asm) and put it in your path.
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* Download the SQLite amalgemation from
|
|
|
|
|
http://www.sqlite.org/download.html
|
|
|
|
|
and extract it into SVN\sqlite-amalgemation.
|
|
|
|
|
See I.C.12 for alternatives to using the amalgemation package.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
C:>set BUILD_ROOT=C:\SVN
|
2013-06-18 02:07:41 +00:00
|
|
|
|
C:>set PYTHONDIR=C:\Python22
|
|
|
|
|
C:>set AWKDIR=C:\SVN\Awk
|
|
|
|
|
C:>set ASMDIR=C:\SVN\asm
|
2015-10-12 08:54:49 +00:00
|
|
|
|
C:>set SDKINC="C:\Program Files\Microsoft SDK\include"
|
|
|
|
|
C:>set SDKLIB="C:\Program Files\Microsoft SDK\lib"
|
2013-06-18 02:07:41 +00:00
|
|
|
|
C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin
|
2015-10-12 08:54:49 +00:00
|
|
|
|
C:>PATH=%PATH%;%BUILD_ROOT%\src-%DIR%\db4-win32;%ASMDIR%;
|
2013-06-18 02:07:41 +00:00
|
|
|
|
%PYTHONDIR%;%AWKDIR%;%GETTEXTBIN%
|
|
|
|
|
C:>set INCLUDE=%SDKINC%;%INCLUDE%
|
|
|
|
|
C:>set LIB=%SDKLIB%;%LIB%
|
|
|
|
|
|
|
|
|
|
OpenSSL
|
|
|
|
|
|
|
|
|
|
C:>cd openssl-0.9.7f
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Apache 2
|
|
|
|
|
|
|
|
|
|
This step is only required for building the server dso modules.
|
|
|
|
|
|
|
|
|
|
C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
|
|
|
|
|
C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Serf
|
|
|
|
|
|
|
|
|
|
### Section about serf might be required/useful to add.
|
|
|
|
|
### scons is required too and 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
|
|
|
|
|
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
2015-10-12 08:54:49 +00:00
|
|
|
|
the msdev/msbuild commands.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
* 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.
|
|
|
|
|
* The /USEENV switch to msdev makes it take notice of the INCLUDE and
|
|
|
|
|
LIB environment variables, it also makes it ignore its own lib and
|
|
|
|
|
include settings so you need to have the Windows SDK lib and include
|
|
|
|
|
directories in the LIB and INCLUDE environment variables. Do *not*
|
|
|
|
|
use this switch when starting up the msdev Visual environment. If you
|
|
|
|
|
wish to build in the Visual environment the SDK lib and include
|
|
|
|
|
directories must be in the Tools/Options/Directories settings (if you
|
|
|
|
|
followed the 'Register the SDK with Visual Studio 6' instructions
|
|
|
|
|
above this has been done for you).
|
2015-10-12 08:54:49 +00:00
|
|
|
|
* If you are using Visual Studio later than VC6 change -t dsw into
|
|
|
|
|
-t vcproj and add the --vsnet-version=20xx option on the gen-make.py
|
|
|
|
|
command.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
In this case 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 -t dsp --with-berkeley-db=db4-win32
|
|
|
|
|
--with-openssl=..\openssl-0.9.7f --with-zlib=..\zlib
|
|
|
|
|
--with-libintl=..\svn-win32-libintl
|
|
|
|
|
|
|
|
|
|
Then build subversion:
|
|
|
|
|
|
|
|
|
|
C:>msdev subversion_msvc.dsw /USEENV /MAKE "__ALL_TESTS__ - Win32 Release"
|
|
|
|
|
C:>cd ..
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
Or, with Visual C++.NET 2005 or C++ Express 2005:
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
C:>devenv subversion_vcnet.sln /build "Release" /project "__ALL_TESTS__"
|
|
|
|
|
C:>cd ..
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
Or, with Visual C++.NET 2008+, C++ Express 2008+, Studio Express 2012+ or
|
|
|
|
|
Studio Community 2013+:
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
C:>msbuild subversion_vcnet.sln /t:__ALL_TESTS__ /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:
|
|
|
|
|
|
2015-10-12 08:54:49 +00:00
|
|
|
|
C:>PATH=%BUILD_ROOT%\svn-win32-%VER%\bin;%PATH%
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
|
|
1. Obtaining and Installing Apache 2
|
|
|
|
|
|
|
|
|
|
Subversion tries to compile against the latest released version
|
2016-04-30 10:35:42 +00:00
|
|
|
|
of Apache httpd 2.2+. The easiest thing for you to do is download
|
2013-06-18 02:07:41 +00:00
|
|
|
|
a source tarball of the latest release and unpack that.
|
|
|
|
|
|
2016-04-30 10:35:42 +00:00
|
|
|
|
If you have questions about the Apache httpd 2.2 build, please consult
|
2013-06-18 02:07:41 +00:00
|
|
|
|
the httpd install documentation:
|
|
|
|
|
|
2016-04-30 10:35:42 +00:00
|
|
|
|
http://httpd.apache.org/docs-2.2/install.html
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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,
|
2015-10-12 08:54:49 +00:00
|
|
|
|
see section I.C.7.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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
|
2016-04-30 10:35:42 +00:00
|
|
|
|
you need to. Then, assuming Apache httpd 2.2 is installed in the
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
2016-04-30 10:35:42 +00:00
|
|
|
|
being skipped, this may be because you have Apache httpd 2.x
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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
|
2013-11-11 01:00:29 +00:00
|
|
|
|
/usr/local/libexec/ (or elsewhere, such as /usr/local/apache2/modules/,
|
|
|
|
|
if you passed --with-apache-libexecdir to configure).
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Section II.E explains how to build the server on Windows.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C. Configuring Apache 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:
|
2016-04-30 10:35:42 +00:00
|
|
|
|
http://httpd.apache.org/docs-2.2/
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
First, your httpd.conf needs to load the mod_dav_svn module.
|
2013-11-11 01:00:29 +00:00
|
|
|
|
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
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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>
|
|
|
|
|
|
2016-04-30 10:35:42 +00:00
|
|
|
|
### FIXME Tutorials section refers to old 2.0 docs
|
2013-06-18 02:07:41 +00:00
|
|
|
|
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:
|
|
|
|
|
http://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
|
2016-04-30 10:35:42 +00:00
|
|
|
|
documentation: http://httpd.apache.org/docs-2.2/mod/directives.html.
|
2013-06-18 02:07:41 +00:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
http://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:
|
|
|
|
|
|
|
|
|
|
http://www.apache.org/dist/httpd/binaries/win32/#xpbug
|
|
|
|
|
|
|
|
|
|
And there's an item about this in the Subversion FAQ:
|
|
|
|
|
|
|
|
|
|
http://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
|