1 ====================================== 2 INSTALLING SUBVERSION 3 A Quick Guide 4 ====================================== 5 6$LastChangedDate: 2017-12-25 04:00:08 +0000 (Mon, 25 Dec 2017) $ 7 8 9Contents: 10 11 I. INTRODUCTION 12 A. Audience 13 B. Dependency Overview 14 C. Dependencies in Detail 15 D. Documentation 16 17 II. INSTALLATION 18 A. Building from a Tarball 19 B. Building the Latest Source under Unix 20 C. Building under Unix in Different Directories 21 D. Installing from a Zip or Installer File under Windows 22 E. Building the Latest Source under Windows 23 24 III. BUILDING A SUBVERSION SERVER 25 A. Setting Up Apache Httpd 26 B. Making and Installing the Subversion Server 27 C. Configuring Apache for Subversion 28 D. Running and Testing 29 E. Alternative: 'svnserve' and ra_svn 30 31 IV. PLATFORM-SPECIFIC ISSUES 32 A. Windows XP 33 B. Mac OS X 34 35 V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) 36 37 38 39I. INTRODUCTION 40 ============ 41 42 A. Audience 43 44 This document is written for people who intend to build 45 Subversion from source code. Normally, the only people who do 46 this are Subversion developers and package maintainers. 47 48 If neither of these labels fits you, we recommend you find an 49 appropriate binary package of Subversion and install that. 50 While the Subversion project doesn't officially release binary 51 packages, a number of volunteers have made such packages 52 available for different operating systems. Most Linux and BSD 53 distributions already have Subversion packages ready to go via 54 standard packaging channels, and other volunteers have built 55 'installers' for both Windows and OS X. Visit this page for 56 package links: 57 58 https://subversion.apache.org/packages.html 59 60 For those of you who still wish to build from source, Subversion 61 follows the Unix convention of "./configure && make", but it has 62 a number of dependencies. 63 64 65 B. Dependency Overview 66 67 You'll need the following build tools to compile Subversion: 68 69 * autoconf 2.59 or later (Unix only) 70 * libtool 1.4 or later (Unix only) 71 * a reasonable C compiler (gcc, Visual Studio, etc.) 72 73 74 Subversion also depends on the following third-party libraries: 75 76 * libapr and libapr-util (REQUIRED for client and server) 77 78 The Apache Portable Runtime (APR) library provides an 79 abstraction of operating-system level services such as file 80 and network I/O, memory management, and so on. It also 81 provides convenience routines for things like hashtables, 82 checksums, and argument processing. While it was originally 83 developed for the Apache HTTP server, APR is a standalone 84 library used by Subversion and other products. It is a 85 critical dependency for all of Subversion; it's the layer 86 that allows Subversion clients and servers to run on 87 different operating systems. 88 89 * SQLite (REQUIRED for client and server) 90 91 Subversion uses SQLite to manage some internal databases. 92 93 * libz (REQUIRED for client and server) 94 95 Subversion uses zlib for compressing binary differences. 96 These diff streams are used everywhere -- over the network, 97 in the repository, and in the client's working copy. 98 99 * Apache Serf (OPTIONAL for client) 100 101 The Apache Serf library allows the Subversion client to send HTTP 102 requests. This is necessary if you want your client to access 103 a repository served by the Apache HTTP server. There is an 104 alternate 'svnserve' server as well, though, and clients 105 automatically know how to speak the svnserve protocol. 106 Thus it's not strictly necessary for your client to be able 107 to speak HTTP... though we still recommend that your client 108 be built to speak both HTTP and svnserve protocols. 109 110 * OpenSSL (OPTIONAL for client and server) 111 112 OpenSSL enables your client to access SSL-encrypted https:// 113 URLs (using Apache Serf) in addition to unencrypted http:// URLs. 114 To use SSL with Subversion's WebDAV server, Apache needs to be 115 compiled with OpenSSL as well. 116 117 * Netwide Assembler (OPTIONAL for client and server) 118 119 The Netwide Assembler (NASM) is used to build the (optionally) 120 assembler modules of OpenSSL. As of OpenSSL 1.1.0 NASM is the 121 only supported assembler. 122 123 * Berkeley DB (OPTIONAL for client and server) 124 125 There are two different repository 'back-end' 126 implementations. One implementation stores data in a flat 127 filesystem (known as FSFS); the other implementation stores 128 data in a Berkeley DB database (known as BDB). When you 129 create a repository, you have the option of specifying a 130 storage back-end. The Berkeley DB back-end will only be 131 available if the BDB libraries are discovered at compile 132 time. The Berkeley DB back-end has been deprecated and 133 is not recommend. 134 135 * libsasl (OPTIONAL for client and server) 136 137 If the Cyrus SASL library is detected at compile time, then 138 the svn client (and svnserve server) will be able to utilize 139 SASL to do various forms of authentication when speaking the 140 svnserve protocol. 141 142 * Python, Perl, Java, Ruby (OPTIONAL) 143 144 Subversion is mostly a collection of C libraries with 145 well-defined APIs, with a small collection of programs that 146 use the APIs. If you want to build Subversion API bindings 147 for other languages, you need to have those languages 148 available at build time. 149 150 * KDELibs, GNOME Keyring (OPTIONAL for client) 151 152 Subversion contains optional support for storing passwords in 153 KWallet (KDE 4) or GNOME Keyring. 154 155 * libmagic (OPTIONAL) 156 157 If the libmagic library is detected at compile time, 158 it will be used to determine mime-types of binary files 159 which are added to version control. Note that mime-types 160 configured via auto-props or the mime-types-file option 161 take precedence. 162 163 * Googlemock aka Gmock (OPTIONAL) 164 165 This optional package is used by the tests for Subversions' 166 C++ bindings. 167 168 169 C. Dependencies in Detail 170 171 Subversion depends on a number of third party tools and libraries. 172 Some of them are only required to run a Subversion server; others 173 are necessary just for a Subversion client. This section explains 174 what other tools and libraries will be required so that Subversion 175 can be built with the set of features you want. 176 177 On Unix systems, the './configure' script will tell you if you are 178 missing the correct version of any of the required libraries or 179 tools, so if you are in a real hurry to get building, you can skip 180 straight to section II. If you want to gather the pieces you will 181 need before starting out, however, you should read the following. 182 183 If you're just installing a Subversion client, the Subversion 184 team has created a script that downloads the minimal prerequisite 185 libraries (Apache Portable Runtime, Sqlite, and Zlib). The script, 186 'get-deps.sh', is available in the same directory as this file. 187 When run, it will place 'apr', 'apr-util', 'serf', 'zlib', and 188 'sqlite-amalgamation' directories directly into your unpacked Subversion 189 distribution. With the exception of sqlite-amalgamation, they will 190 still need to be configured, built and installed explicitly, and 191 Subversion's own configure script may need to be told where to find 192 them, if they were not installed in standard system locations. 193 194 Note: there are optional dependencies (such as OpenSSL, swig, and httpd) 195 which get-deps.sh does not download. 196 197 Note: Because previous builds of Subversion may have installed older 198 versions of these libraries, you may want to run some of the cleanup 199 commands described in section II.B before installing the following. 200 201 202 1. Apache Portable Runtime 1.3 or newer (REQUIRED) 203 204 Whenever you want to build any part of Subversion, you need the 205 Apache Portable Runtime (APR) and the APR Utility (APR-util) 206 libraries. 207 208 If you do not have a pre-installed APR and APR-util, you will need 209 to get these yourself: 210 211 https://apr.apache.org/download.cgi 212 213 On Unix systems, if you already have the APR libraries compiled and do 214 not wish to regenerate them from source code, then Subversion needs to 215 be able to find them. 216 217 There are a couple of options to "./configure" that tell it where 218 to look for the APR and APR-util libraries. By default it will try 219 to locate the libraries using apr-config and apu-config scripts. 220 These scripts provide all the relevant information for the APR and 221 APR-util installations. 222 223 If you want to specify the location of the APR library, you can use 224 the "--with-apr=" option of "./configure". It should be able to find 225 the apr-config script in the standard location under that directory 226 (e.g. ${prefix}/bin). 227 228 Similarly, you can specify the location of APR-util using the 229 "--with-apr-util=" option to "./configure". It will look for the 230 apu-config script relative to that directory. 231 232 For example, if you want to use the APR libraries you built 233 with the Apache httpd server, you could run: 234 235 $ ./configure --with-apr=/usr/local/apache2 \ 236 --with-apr-util=/usr/local/apache2 ... 237 238 Be sure to use a native Windows SVN client (as opposed to 239 Cygwin's version) so that the .dsp files get carriage-returns at 240 the ends of their lines. Otherwise Visual Studio will complain 241 that it doesn't recognize the .dsp files. 242 243 If you use APR libraries checked out from svn in an Unix 244 environment, you need to run the 'buildconf' script in each 245 library's directory, to regenerate the configure scripts and 246 other files required for compiling the libraries: 247 248 $ cd apr; ./buildconf; ./configure ...; make; make install; cd .. 249 250 $ cd apr-util; ./buildconf; ./configure ...; make; make install; cd .. 251 252 Configure build and install both libraries before running Subversion's 253 configure script. 254 255 256 2. Zlib (REQUIRED) 257 258 Subversion's binary-differencing engine depends on zlib for 259 compression. Most Unix systems have libz pre-installed, but 260 if you need it, you can get it from 261 262 http://www.zlib.net/ 263 264 265 3. autoconf 2.59 or newer (Unix only) 266 267 This is required only if you plan to build from the latest source 268 (see section II.B). Generally only developers would be doing this. 269 270 271 4. libtool 1.4 or newer (Unix only) 272 273 This is required only if you plan to build from the latest source 274 (see section II.B). 275 276 Note: Some systems (Solaris, for example) require libtool 1.4.3 or 277 newer. The autogen.sh script knows about that. 278 279 280 5. Apache Serf library 1.3.4 or newer (OPTIONAL) 281 282 If you want your client to be able to speak to an Apache 283 server (via a http:// or https:// URL), you must link against 284 Apache Serf. Though optional, we strongly recommend this. 285 286 In order to use ra_serf, you must install serf, and run Subversion's 287 ./configure with the argument --with-serf. If serf is installed in a 288 non-standard place, you should use 289 290 --with-serf=/path/to/serf/install 291 292 instead. 293 294 Apache Serf can be obtained via your system's package distribution 295 system or directly from http://code.google.com/p/serf/. 296 297 For more information on Apache Serf and Subversion's ra_serf, see the 298 file subversion/libsvn_ra_serf/README. 299 300 6. OpenSSL (OPTIONAL) 301 302 ### needs some updates. I think Apache Serf automagically handles 303 ### finding OpenSSL, but we may need more docco here. and w.r.t 304 ### zlib. 305 306 The Apache Serf library has support for SSL encryption by relying on the 307 OpenSSL library. 308 309 a. Using OpenSSL on the client through Apache Serf 310 311 On Unix systems, to build Apache Serf with OpenSSL, you need OpenSSL 312 installed on your system, and you must add "--with-ssl" as a 313 "./configure" parameter. If your OpenSSL installation is hard 314 for Apache Serf to find, you may need to use 315 "--with-libs=/path/to/lib" in addition. In particular, on Red Hat 316 (but not Fedora Core) it is necessary to specify 317 "--with-libs=/usr/kerberos" for OpenSSL to be found. You can also 318 specify a path to the zlib library using "--with-libs". 319 320 Under Windows, you can specify the paths to these libraries by 321 passing the options --with-zlib and --with-openssl to gen-make.py. 322 323 b. Using OpenSSL on the Apache server 324 325 You can also add support for these features to an Apache httpd 326 server to be used for Subversion using the same support libraries. 327 The Subversion build system will not provide them, however. You 328 add them by specifying parameters to the "./configure" script of 329 the Apache Server instead. 330 331 For getting SSL on your server, you would add the "--enable-ssl" 332 or "--with-ssl=/path/to/lib" option to Apache's "./configure" 333 script. Apache enables zlib support by default, but you can 334 specify a nonstandard location for the library with the 335 "--with-z=/path/to/dir" option. Consult the Apache documentation 336 for more details, and for other modules you may wish to install 337 to enhance your Subversion server. 338 339 If you don't already have it, you can get a copy of OpenSSL, 340 including instructions for building and packaging on both Unix 341 systems and Windows, at: 342 343 https://www.openssl.org/ 344 345 346 7. Berkeley DB 4.X (OPTIONAL) 347 348 Berkeley DB is needed to build a Subversion server that supports 349 the BDB repository filesystem, or to access a BDB repository on 350 local disk. If you will only use the FSFS repository filesystem, 351 or if you are building a Subversion client that will only speak 352 to remote (networked) repositories, you don't need it. 353 354 The current recommended version is 4.4.20 or newer, which brings 355 auto-recovery functionality to the Berkeley DB database 356 environment. 357 358 If you must use an older version of Berkeley DB, we *strongly* 359 recommend using 4.3 or 4.2 over the 4.1 or 4.0 versions. Not 360 only are these significantly faster and more stable, but they 361 also enable Subversion repositories to automatically clean up 362 database journal files to save disk space. 363 364 You'll need Berkeley DB installed on your system. You can 365 get it from: 366 367 http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html 368 369 If you have Berkeley DB installed in a place not searched by default 370 for includes and libraries, add something like this: 371 372 --with-berkeley-db=db.h:/usr/local/include/db4.7:/usr/local/lib/db4.7:db-4.7 373 374 to your `configure' switches, and the build process will use the 375 Berkeley DB header and library in the named directories. You may 376 need to use a different path, of course. Note that in order for 377 the detection to succeed, the dynamic linker must be able to find 378 the libraries at configure time. 379 380 If you are on the Windows platform and want to build Subversion, 381 a precompiled version of the Berkeley DB library is available for 382 download at the Subversion web site "Documents & files" area: 383 384 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688 385 386 Look in the "Releases > Windows > Windows BDB" section. 387 388 389 8. Cyrus SASL library (OPTIONAL) 390 391 If the Simple Authentication and Security Layer (SASL) library 392 is detected on your system, then the Subversion client and 393 svnserve server can utilize its abilities for various forms of 394 authentication. To learn more about SASL or to get the source 395 code, visit: 396 397 http://freshmeat.net/projects/cyrussasl/ 398 399 400 9. Apache Web Server 2.2.X or newer (OPTIONAL) 401 402 (https://httpd.apache.org/download.cgi) 403 404 The Apache httpd server is one of two methods to make your Subversion 405 repository available over a network - the other is a custom server 406 program called svnserve, which requires no extra software packages. 407 Building Subversion, the Apache server, and the modules that Apache 408 needs to communicate with Subversion are complicated enough that there 409 is a whole section at the end of this document that describes how it 410 is done: See section III for details. 411 412 413 10. Python 2.7 or newer (https://www.python.org/) (OPTIONAL) 414 415 If you want to run "make check" or build from the latest source 416 under Unix/Windows as described in section II.B, II.E and III.D, 417 install Python 2.7 or higher on your system. The majority of the 418 test suite is written in Python, as is part of Subversion's build 419 system. 420 421 Note that Python 3.x is not supported and most likely won't work. 422 423 424 11. Perl 5.8 or newer (Windows only) (OPTIONAL) 425 426 To build Subversion under any of the MS Windows platforms, you 427 will also need Perl 5.8 or newer to run apr-util's w32locatedb.pl 428 script. 429 430 431 12. SQLite (REQUIRED) 432 433 Subversion requires SQLite version 3.8.2 or above. You can meet this 434 dependency several ways: 435 * Use an SQLite amalgamation file. 436 * Specify an SQLite installation to use. 437 * Let Subversion find an installed SQLite. 438 439 To use an SQLite-provided amalgamation, just drop sqlite3.c into 440 Subversion's sqlite-amalgamation/ directory, or point to it with the 441 --with-sqlite configure option. This file also ships with the Subversion 442 dependencies distribution, or you can download it from SQLite: 443 444 https://www.sqlite.org/download.html 445 446 447 13. pkg-config (Unix only, OPTIONAL) 448 449 Subversion uses pkg-config to find appropriate options used 450 at build time. 451 452 453 14. D-Bus (Unix only, OPTIONAL) 454 455 D-Bus is a message bus system. D-Bus is required for support for KWallet 456 and GNOME Keyring. pkg-config is needed to find D-Bus headers and library. 457 458 459 15. Qt 4 (Unix only, OPTIONAL) 460 461 Qt is a cross-platform application framework. QtCore, QtDBus and QtGui 462 modules are required for support for KWallet. pkg-config is needed 463 to find Qt headers and libraries. 464 465 466 16. KDELibs 4 (Unix only, OPTIONAL) 467 468 Subversion contains optional support for storing passwords in KWallet. 469 KDELibs contains core KDE libraries. Subversion uses libkdecore and libkdeui 470 libraries when support for KWallet is enabled. kde4-config is used to get 471 some necessary options. pkg-config, D-Bus and Qt 4 are also required. 472 If you want to build support for KWallet, then pass the '--with-kwallet' 473 option to `configure`. If KDE is installed in a non-standard prefix, then 474 use: 475 476 --with-kwallet=/path/to/KDE/prefix 477 478 17. GLib 2 (Unix only, OPTIONAL) 479 480 GLib is a general-purpose utility library. GLib is required for support 481 for GNOME Keyring. pkg-config is needed to find GLib headers and library. 482 483 484 18. GNOME Keyring (Unix only, OPTIONAL) 485 486 Subversion contains optional support for storing passwords in GNOME Keyring. 487 pkg-config is needed to find GNOME Keyring headers and library. D-Bus and 488 GLib are also required. If you want to build support for GNOME Keyring, 489 then pass the '--with-gnome-keyring' option to `configure`. 490 491 492 19. Ctypesgen (OPTIONAL) 493 494 Ctypesgen is Python wrapper generator for ctypes. It is used to generate 495 a part of Subversion Ctypes Python bindings (CSVN). If you want to build 496 CSVN, then pass the '--with-ctypesgen' option to `configure`. If ctypesgen.py 497 is installed in a non-standard place, then use: 498 499 --with-ctypesgen=/path/to/ctypesgen.py 500 501 For more information on CSVN, see subversion/bindings/ctypes-python/README. 502 503 20. libmagic (OPTIONAL) 504 505 Subversion's configure script attempts to find libmagic automatically. 506 If it is installed in a non-standard location, then use: 507 508 --with-libmagic=/path/to/libmagic/prefix 509 510 The files include/magic.h and lib/libmagic.so.1.0 (or similar) 511 are expected beneath this prefix directory. If they cannot be 512 found Subversion will be compiled without support for libmagic. 513 514 If libmagic is installed but support for it should not be compiled 515 in, then use: 516 517 --with-libmagic=no 518 519 If configure should fail when libmagic is not present, but only 520 the default locations should be searched, then use: 521 522 --with-libmagic 523 524 21. Googlemock (OPTIONAL) 525 526 Googlemock can be installed and built in-tree by invoking 527 528 $ ./get-dep.sh gmock 529 530 22. LZ4 (OPTIONAL) 531 532 Subversion uses LZ4 compression libary version r129 or above. Configure 533 will attempt to locate the system library by default using pkg-config 534 and known paths. 535 536 If it is installed in a non-standard location, then use: 537 538 --with-lz4=/path/to/liblz4 539 540 If configure should use the version bundled with the sources, use: 541 --with-lz4=internal 542 543 D. Documentation 544 545 The primary documentation for Subversion is the free book 546 "Version Control with Subversion", a.k.a. "The Subversion Book", 547 obtainable from http://svnbook.red-bean.com/. 548 549 Various additional documentation exists in the doc/ subdirectory of 550 the Subversion source. See the file doc/README for more information. 551 552 553 554II. INSTALLATION 555 ============ 556 557 A. Building from a Tarball 558 ------------------------------ 559 560 1. Building from a Tarball 561 562 Download the most recent distribution tarball from: 563 564 https://subversion.apache.org/download/ 565 566 Unpack it, and use the standard GNU procedure to compile: 567 568 $ ./configure 569 $ make 570 # make install 571 572 You can also run the full test suite by running 'make check'. Even 573 in successful runs, some tests will report XFAIL; that is normal. 574 Failed runs are indicated by FAIL or XPASS results, or a non-zero exit 575 code from "make check". 576 577 578 B. Building the Latest Source under Unix 579 ------------------------------------- 580 581 These instructions assume you have already installed Subversion 582 and checked out a working copy of Subversion's own code -- 583 either the latest /trunk code, or some branch or tag. You also 584 need to have already installed whatever prerequisites that 585 version of Subversion requires (if you haven't, the ./configure 586 step should complain). 587 588 You can discard the directory created by the tarball; you're 589 about to build the latest, greatest Subversion client. This is 590 the procedure Subversion developers use. 591 592 First off, if you have any Subversion libraries lying around 593 from previous 'make installs', clean them up first! 594 595 # rm -f /usr/local/lib/libsvn* 596 # rm -f /usr/local/lib/libapr* 597 # rm -f /usr/local/lib/libserf* 598 599 Start the process by running "autogen.sh": 600 601 $ sh ./autogen.sh 602 603 This script will make sure you have all the necessary components 604 available to build Subversion. If any are missing, you will be 605 told where to get them from. (See the 'Dependency Overview' in 606 section I.) 607 608 Note: if the command "autoconf" on your machine does not run 609 autoconf 2.59 or later, but you do have a new enough autoconf 610 available, then you can specify the correct one with the 611 AUTOCONF variable. (The AUTOHEADER variable is similar.) This 612 may be required on Debian GNU/Linux, where "autoconf" is 613 actually a Perl script that attempts to guess which version is 614 required -- because of the interaction between Subversion's and 615 APR's configuration systems, the Perl script may get it wrong. 616 So for example, you might need to do: 617 618 $ AUTOCONF=autoconf2.59 sh ./autogen.sh 619 620 Once you've prepared the working copy by running autogen.sh, 621 just follow the usual configuration and build procedure: 622 623 $ ./configure 624 $ make 625 # make install 626 627 (Optionally, you might want to pass --enable-maintainer-mode to 628 the ./configure script. This enables debugging symbols in your 629 binaries (among other things) and most Subversion developers use it.) 630 631 Since the resulting binary depends on shared libraries, the 632 destination library directory must be identified in your 633 operating system's library search path. That is in either 634 /etc/ld.so.conf or $LD_LIBRARY_PATH for Linux systems and in 635 /etc/rc.conf for FreeBSD, followed by a run of the 'ldconfig' 636 program. Check your system documentation for details. By 637 identifying the destination directory, Subversion will be able 638 to dynamically load repository access plugins. If you try to do 639 a checkout and see an error like: 640 641 subversion/libsvn_ra/ra_loader.c:209: (apr_err=170000) 642 svn: Unrecognized URL scheme 'https://svn.apache.org/repos/asf/subversion/trunk' 643 644 It probably means that the dynamic loader/linker can't find all 645 of the libsvn_* libraries. 646 647 648 C. Building under Unix in Different Directories 649 -------------------------------------------- 650 651 It is possible to configure and build Subversion on Unix in a 652 directory other than the working copy. For example 653 654 $ svn co https://svn.apache.org/repos/asf/subversion/trunk svn 655 $ cd svn 656 $ # get SQLite amalgamation if required 657 $ chmod +x autogen.sh 658 $ ./autogen.sh 659 $ mkdir ../obj 660 $ cd ../obj 661 $ ../svn/configure [...with options as appropriate...] 662 $ make 663 664 puts the Subversion working copy in the directory svn and builds 665 it in a separate, parallel directory obj. 666 667 Why would you want to do this? Well there are a number of 668 reasons... 669 670 * You may prefer to avoid "polluting" the working copy with 671 files generated during the build. 672 673 * You may want to put the build directory and the working 674 copy on different physical disks to improve performance. 675 676 * You may want to separate source and object code and only 677 backup the source. 678 679 * You may want to remote mount the working copy on multiple 680 machines, and build for different machines from the same 681 working copy. 682 683 * You may want to build multiple configurations from the 684 same working copy. 685 686 The last reason above is possibly the most useful. For instance 687 you can have separate debug and optimized builds each using the 688 same working copy. Or you may want a client-only build and a 689 client-server build. Using multiple build directories you can 690 rebuild any or all configurations after an edit without the need 691 to either clean and reconfigure, or identify and copy changes 692 into another working copy. 693 694 695 D. Installing from a Zip or Installer File under Windows 696 ----------------------------------------------------- 697 698 Of all the ways of getting a Subversion client, this is the 699 easiest. Download a Zip or self-extracting installer via: 700 701 https://subversion.apache.org/packages.html#windows 702 703 For a Zip file extract the DLLs and EXEs to a directory of your 704 choice. Included in the download are among other tools the SVN 705 client, the SVNADMIN administration tool and the SVNLOOK reporting 706 tool. 707 708 You may want to add the bin directory in the Subversion folder to your 709 PATH environment variable so as to not have to use the full path when 710 running Subversion commands. 711 712 To test the installation, open a DOS box (run either "cmd" or 713 "command" from the Start menu's "Run..." menu option), change to 714 the directory you installed the executables into, and run: 715 716 C:\test>svn co https://svn.apache.org/repos/asf/subversion/trunk svn 717 718 This will get the latest Subversion sources and put them into the 719 "svn" subdirectory. 720 721 If using a self-extracting .exe file, just run it instead of 722 unzipping it, to install Subversion. 723 724 E. Building the Latest Source under Windows 725 ---------------------------------------- 726 727 E.1 Prerequisites 728 729 * Microsoft Visual Studio. Any recent (2005+) version containing the 730 Visual C++ component will work (E.g. Professional, Express, Community 731 Edition). Make sure you enable C++ support during setup. 732 * Python 2.7 or higher, downloaded from https://www.python.org/ which is 733 used to generate the project files. 734 Note that Python 3.x is not supported (yet). 735 * Perl 5.8 or higher from https://www.perl.org/get.html 736 * Awk (from https://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is 737 needed to compile Apache. Note that this is the actual awk program, 738 not an installer - just rename it to awk.exe and it is ready to use. 739 * Apache apr, apr-util, and optionally apr-iconv libraries, version 740 1.3 or later (1.2 for apr-iconv). If you are building from a Subversion 741 checkout and have not downloaded Apache 2, then get these 3 libraries 742 from https://www.apache.org/dist/apr/. 743 * SQLite 3.8.2 or higher from https://www.sqlite.org/download.html 744 (3.8.11.1 or higher recommended) 745 * ZLib 1.2 or higher is required and can be obtained from 746 http://www.zlib.net/ 747 * Either a Subversion client binary from 748 https://subversion.apache.org/packages.html to do the initial checkout 749 of the Subversion source or the zip file source distribution. 750 751 Additional Options 752 753 * [Optional] Apache Httpd 2 source, downloaded from 754 https://httpd.apache.org/download.cgi, these instructions assume 755 version 2.0.58. This is only needed for building the Subversion 756 server Apache modules. ### FIXME Apache 2.2 or greater required. 757 * [Optional] Berkeley DB for backend support of the server components 758 are available from 759 http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html 760 (Version 4.4.20 or in specific cases some higher version recommended) 761 For more information see Section I.C.7. 762 * [Optional] Openssl can be obtained from https://www.openssl.org/source/ 763 * [Optional] NASM can be obtained from http://www.nasm.us/ 764 * [Optional] A modified version of GNU libintl, called 765 svn-win32-libintl.zip, can be used for displaying localized 766 messages. Available at: 767 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627 768 * [Optional] GNU gettext for generating message catalog (.mo) 769 files from message translations. You can get the latest 770 binaries from http://gnuwin32.sourceforge.net/. You'll need the 771 binaries (gettext-0.14.1-bin.zip) and dependencies 772 (gettext-0.14.1-dep.zip). 773 774 E.2 Notes 775 776 The Apache Serf library supports secure connections with OpenSSL 777 and on-the-wire compression with zlib. If you want to use the 778 secure connections feature, you should pass the option 779 "--with-openssl" to the gen-make.py script. See Section I.C.6 for 780 more details. 781 782 E.3 Preparation 783 784 This section describes how to unpack the files to make a build tree. 785 786 * Make a directory SVN and cd into it. 787 * Either checkout Subversion: 788 789 svn co https://svn.apache.org/repos/asf/subversion/trunk src-trunk 790 791 or unpack the zip file distribution and rename the directory to 792 src-trunk. 793 794 * Install Visual Studio Environment. You either have to tell the 795 installer to register environment variables or run VCVARS32.BAT 796 before building anything. If you are using a newer Visual Studio, 797 use the 'Visual Studio 20xx Command Prompt' on the Start menu. 798 * Install Python and add it to your path 799 * Install Perl (it should add itself to the path) 800 ### Subversion doesn't need perl. Only some dependencies need it 801 (OpenSSL and some apr scripts) 802 * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add 803 the directory containing it (e.g. SVN\awk) to the path. 804 ### Subversion doesn't need awk. Only some dependencies need it 805 (some apr scripts) 806 * [Optional] Install NASM and add it to your path 807 ### Subversion doesn't need NASM. Only some dependencies need it 808 optionally (OpenSSL) 809 * [Optional] If you checked out Subversion from the repository and want 810 to build Subversion with http/https access support then install the 811 Apache Serf sources into SVN\src-trunk\serf. 812 * [Optional] If you want BDB backend support, extract the Berkeley DB 813 files into SVN\src-trunk\db4-win32. It's a good idea to add 814 SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find 815 the Berkeley DB DLLs. 816 817 [NOTE: This binary package of Berkeley DB is provided for 818 convenience only. Please don't address questions about 819 Berkeley DB that aren't directly related to using Subversion 820 to the project mailing list.] 821 822 If you build Berkeley DB from the source, you will have to copy 823 the file db-x.x.x\build_win32\db.h to 824 SVN\src-trunk\db4-win32\include, and all the import libraries to 825 SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in 826 your path. 827 ### Just use --with-serf instead of the hardcoded path 828 829 * [Optional] If you want to build the server modules, extract Apache 830 source into SVN\httpd-2.x.x. 831 * If you are building from a checkout of Subversion, and you are NOT 832 building Apache, then you will need the APR libraries. Depending 833 on how you got your version of APR, either: 834 - Extract the APR, APR-util and APR-iconv source distributions into 835 SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively. 836 Or: 837 - Extract the apr, apr-util and apr-iconv directories from the 838 srclib folder in the Apache httpd source into SVN\apr, 839 SVN\apr-util, and SVN\apr-iconv respectively. 840 ### Just use --with-apr, etc. instead of the hardcoded paths 841 * Extract the ZLib sources into SVN\zlib if you are not using the zlib 842 included in the dependencies zip file. 843 ### Just use --with-zlib instead of the hardcoded path 844 * [Optional] If you want secure connection (https) client support extract 845 OpenSSL into SVN\openssl 846 ### And pass the path to both serf and gen-make.py 847 * [Optional] If you want localized message support, extract 848 svn-win32-libintl.zip into SVN\svn-win32-libintl and extract 849 gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into 850 SVN\gettext-x.x.x-bin. 851 Add SVN\gettext-x.x.x-bin\bin to your path. 852 * Download the SQLite amalgamation from 853 https://www.sqlite.org/download.html 854 and extract it into SVN\sqlite-amalgamation. 855 See I.C.12 for alternatives to using the amalgamation package. 856 857 E.4 Building the Binaries 858 859 To build the binaries either follow the instructions here or use 860 build\win32\vc6-build.bat.in after editing its default paths to match 861 yours and saving it as vc6-build.bat. The vc6-build.bat does a full build 862 using all options so it requires Apache 2 source and the other optional 863 components. 864 865 Start in the SVN directory you created. 866 867 Set up the environment (commands should be one line even if wrapped here). 868 869 C:>set VER=trunk 870 C:>set DIR=trunk 871 C:>set BUILD_ROOT=C:\SVN 872 C:>set PYTHONDIR=C:\Python27 873 C:>set AWKDIR=C:\SVN\Awk 874 C:>set ASMDIR=C:\SVN\asm 875 C:>set SDKINC="C:\Program Files\Microsoft SDK\include" 876 C:>set SDKLIB="C:\Program Files\Microsoft SDK\lib" 877 C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin 878 C:>PATH=%PATH%;%BUILD_ROOT%\src-%DIR%\db4-win32;%ASMDIR%; 879 %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN% 880 C:>set INCLUDE=%SDKINC%;%INCLUDE% 881 C:>set LIB=%SDKLIB%;%LIB% 882 883 OpenSSL < 1.1.0 884 885 C:>cd openssl 886 C:>perl Configure VC-WIN32 887 [*] C:>call ms\do_masm 888 C:>nmake -f ms\ntdll.mak 889 C:>cd out32dll 890 C:>call ..\ms\test 891 C:>cd ..\.. 892 893 *Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or 894 "call ms\do_ms" if you don't have an assembler. 895 Also if you are using OpenSSL >= 1.0.0 masm is no longer 896 supported. You will have to use do_nasm or do_ms in this case. 897 898 OpenSSL >= 1.1.0 899 900 C:>cd openssl 901 C:>perl Configure VC-WIN32 902 C:>nmake 903 C:>nmake test 904 C:>cd .. 905 906 Apache 2 907 908 This step is only required for building the server dso modules. 909 910 ### FIXME Apache 2.2 or greater required. Old build instructions for VC6. 911 912 C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2 913 C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release" 914 915 APR 916 917 If you downloaded APR / APR-UTIL / APR_ICONV by source, you will have to 918 build these libraries first. 919 Building these libraries on Windows is straight forward and in most cases 920 as simple as issuing these two commands: 921 922 C:>nmake -f Makefile.win 923 C:>nmake -f Makefile.win install 924 925 Please refere to the build instructions provided by the library source 926 for actual build instructions. 927 928 ZLib 929 930 If you downloaded the zlib source, you will have to build ZLib first. 931 Building ZLib using Visual Studio should be quite simple. Just open the 932 appropriate solution and build the project zlibstat using the IDE. 933 934 Please refere to the build instructions provided by the library source 935 for actual build instructions. 936 937 Note that you'd make sure to define ZLIB_WINAPI in the ZLib config 938 header and move the lib-file into the zlib root-directory. 939 940 Apache Serf 941 942 ### Section about Apache Serf might be required/useful to add. 943 ### scons is required too and Apache Serf needs to be configured prior to 944 ### be able to build Subversion using: 945 ### scons APR=[PATH_TO_APR] APU=[PATH_TO_APU] OPENSSL=[PATH_TO_OPENSSL] 946 ### ZLIB=[PATH_TO_ZLIB] PREFIX=[PATH_TO_SERF_DEST] 947 ### scons check 948 ### scons install 949 950 Subversion 951 952 Things to note: 953 954 * If you don't want to build mod_dav_svn, omit the --with-httpd 955 option. The zip file source distribution contains apr, apr-util and 956 apr-iconv in the default build location. If you have downloaded the 957 apr files yourself you will have to tell the generator where to find 958 the APR libraries; the options are --with-apr, --with-apr-util and 959 --with-apr-iconv. 960 * If you would like a debug build substitute Debug for Release in 961 the msbuild command. 962 * There have been rumors that Subversion on Win32 can be built 963 using the latest cygwin, you probably don't want the zip file source 964 distribution though. ymmv. 965 * You will also have to distribute the C runtime dll with the binaries. 966 Also, since Apache/APR do not provide .vcproj files, you will need to 967 convert the Apache/APR .dsp files to .vcproj files with Visual Studio 968 before building -- just open the Apache .dsw file and answer 'Yes To 969 All' when the conversion dialog pops up, or you can open the individual 970 .dsp files and convert them one at a time. 971 The Apache/APR projects required by Subversion are: 972 apr-util\libaprutil.dsp, apr\libapr.dsp, 973 apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp, 974 apr-iconv\ccs\libapriconv_ccs_modules.dsp, and 975 apr-iconv\ces\libapriconv_ces_modules.dsp. 976 * If the server dso modules are being built and tested Apache must not 977 be running or the copy of the dso modules will fail. 978 979 C:>cd src-%DIR% 980 981 If Apache 2 has been built and the server modules are required then 982 gen-make.py will already have been run. If the source is from the zip 983 file, Apache 2 has not been built so gen-make.py must be run: 984 985 C:>python gen-make.py --vsnet-version=20xx --with-berkeley-db=db4-win32 986 --with-openssl=..\openssl --with-zlib=..\zlib 987 --with-libintl=..\svn-win32-libintl 988 989 Then build subversion: 990 991 C:>msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release 992 C:>cd .. 993 994 The binaries have now been built. 995 996 E.5 Packaging the binaries 997 998 You now need to copy the binaries ready to make the release zip 999 file. You also need to do this to run the tests as the new binaries 1000 need to be in your path. You can use the build/win32/make_dist.py 1001 script in the Subversion source directory to do that. 1002 1003 [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.] 1004 1005 E.6 Testing the Binaries 1006 [TBD: It's been a long, long while since it was necessary to move 1007 binaries around for testing. win-tests.py does that automagically. 1008 Fix this section accordingly, and probably reorder, putting 1009 the packaging at the end.] 1010 1011 The build process creates the binary test programs but it does not 1012 copy the client tests into the release test area. 1013 1014 C:>cd src-%DIR% 1015 C:>mkdir Release\subversion\tests\cmdline 1016 C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline 1017 1018 If the server dso modules have been built then copy the dso files and 1019 dlls into the Apache modules directory. 1020 1021 C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so "%APACHEDIR%"\modules 1022 C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so 1023 "%APACHEDIR%"\modules 1024 C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin" 1025 C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin" 1026 C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin" 1027 C:>cd .. 1028 1029 Put the svn-win32-trunk\bin directory at the start of your path so 1030 you run the newly built binaries and not another version you might 1031 have installed. 1032 1033 Then run the client tests: 1034 1035 C:>PATH=%BUILD_ROOT%\svn-win32-%VER%\bin;%PATH% 1036 C:>cd src-%DIR% 1037 C:>python win-tests.py -c -r -v 1038 1039 If the server dso modules were built configure Apache to use the 1040 mod_dav_svn and mod_authz_svn modules by making sure these lines appear 1041 uncommented in httpd.conf: 1042 1043 LoadModule dav_module modules/mod_dav.so 1044 LoadModule dav_fs_module modules/mod_dav_fs.so 1045 LoadModule dav_svn_module modules/mod_dav_svn.so 1046 LoadModule authz_svn_module modules/mod_authz_svn.so 1047 1048 And further down the file add location directives to point to the 1049 test repositories. Change the paths to the SVN directory you created 1050 (paths should be on one line even if wrapped here): 1051 1052 <Location /svn-test-work/repositories> 1053 DAV svn 1054 SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/ 1055 svn-test-work/repositories 1056 </Location> 1057 1058 <Location /svn-test-work/local_tmp/repos> 1059 DAV svn 1060 SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/ 1061 svn-test-work/local_tmp/repos 1062 </Location> 1063 1064 Then restart Apache and run the tests: 1065 1066 C:>python win-tests.py -c -r -v -u http://localhost 1067 C:>cd .. 1068 1069III. BUILDING A SUBVERSION SERVER 1070 ============================ 1071 1072 Subversion has two servers you can choose from: svnserve and 1073 Apache. svnserve is a small, lightweight server program that is 1074 automatically compiled when you build Subversion's source. Apache 1075 is a more heavyweight HTTP server, but tends to have more features. 1076 1077 This section primarily focuses on how to build Apache and the 1078 accompanying mod_dav_svn server module for it. If you plan to use 1079 svnserve instead, jump right to section E for a quick explanation. 1080 1081 1082 A. Setting Up Apache Httpd 1083 ----------------------- 1084 1085 1. Obtaining and Installing Apache Httpd 2 1086 1087 Subversion tries to compile against the latest released version 1088 of Apache httpd 2.2+. The easiest thing for you to do is download 1089 a source tarball of the latest release and unpack that. 1090 1091 If you have questions about the Apache httpd 2.2 build, please consult 1092 the httpd install documentation: 1093 1094 https://httpd.apache.org/docs-2.2/install.html 1095 1096 At the top of the httpd tree: 1097 1098 $ ./buildconf 1099 $ ./configure --enable-dav --enable-so --enable-maintainer-mode 1100 1101 The first arg says to build mod_dav. 1102 1103 The second arg says to enable shared module support which is needed 1104 for a typical compile of mod_dav_svn (see below). 1105 1106 The third arg says to include debugging information. If you 1107 built Subversion with --enable-maintainer-mode, then you should 1108 do the same for Apache; there can be problems if one was 1109 compiled with debugging and the other without. 1110 1111 Note: if you have multiple db versions installed on your system, 1112 Apache might link to a different one than Subversion, causing 1113 failures when accessing the repository through Apache. To prevent 1114 this from happening, you have to tell Apache which db version to 1115 use and where to find db. Add --with-dbm=db4 and 1116 --with-berkeley-db=/usr/local/BerkeleyDB.4.2 to the configure 1117 line. Make sure this is the same db as the one Subversion uses. 1118 This note assumes you have installed Berkeley DB 4.2.52 1119 at its default locations. For more info about the db requirement, 1120 see section I.C.7. 1121 1122 You may also want to include other modules in your build. Add 1123 --enable-ssl to turn on SSL support, and --enable-deflate to turn on 1124 compression support, for example. Consult the Apache documentation 1125 for more details. 1126 1127 All instructions below assume you configured Apache to install 1128 in its default location, /usr/local/apache2/; substitute 1129 appropriately if you chose some other location. 1130 1131 Compile and install apache: 1132 1133 $ make && make install 1134 1135 1136 B. Making and Installing the Subversion Apache Server Module 1137 --------------------------------------------------------- 1138 1139 Go back into your subversion working copy and run ./autogen.sh if 1140 you need to. Then, assuming Apache httpd 2.2 is installed in the 1141 standard location, run: 1142 1143 $ ./configure 1144 1145 Note: do *not* configure subversion with "--disable-shared"! 1146 mod_dav_svn *must* be built as a shared library, and it will 1147 look for other libsvn_*.so libraries on your system. 1148 1149 If you see a warning message that the build of mod_dav_svn is 1150 being skipped, this may be because you have Apache httpd 2.x 1151 installed in a non-standard location. You can use the 1152 "--with-apxs=" option to locate the apxs script: 1153 1154 $ ./configure --with-apxs=/usr/local/apache2/bin/apxs 1155 1156 Note: it *is* possible to build mod_dav_svn as a static library 1157 and link it directly into Apache. Possible, but painful. Stick 1158 with the shared library for now; if you can't, then ask. 1159 1160 $ rm /usr/local/lib/libsvn* 1161 1162 If you have old subversion libraries sitting on your system, 1163 libtool will link them instead of the `fresh' ones in your tree. 1164 Remove them before building subversion. 1165 1166 $ make clean && make && make install 1167 1168 After the make install, the Subversion shared libraries are in 1169 /usr/local/lib/. mod_dav_svn.so should be installed in 1170 /usr/local/libexec/ (or elsewhere, such as /usr/local/apache2/modules/, 1171 if you passed --with-apache-libexecdir to configure). 1172 1173 1174 Section II.E explains how to build the server on Windows. 1175 1176 1177 C. Configuring Apache Httpd for Subversion 1178 --------------------------------------- 1179 1180 The following section is an abbreviated version of the 1181 information in the Subversion Book 1182 (http://svnbook.red-bean.com). Please read chapter 6 for more 1183 details. 1184 1185 The following assumes you have already created a repository. 1186 For documentation on how to do that, see README. 1187 1188 The following also assumes that you have modified 1189 /usr/local/apache2/conf/httpd.conf to reflect your setup. 1190 At a minimum you should look at the User, Group and ServerName 1191 directives. Full details on setting up apache can be found at: 1192 https://httpd.apache.org/docs-2.2/ 1193 1194 First, your httpd.conf needs to load the mod_dav_svn module. 1195 If you pass --enable-mod-activation to Subversion's configure, 1196 'make install' target should automatically add this line for you. 1197 In any case, if Apache HTTPD gives you an error like "Unknown 1198 DAV provider: svn", then you may want to verify that this line 1199 exists in your httpd.conf: 1200 1201 LoadModule dav_svn_module modules/mod_dav_svn.so 1202 1203 NOTE: if you built mod_dav as a dynamic module as well, make sure 1204 the above line appears after the one that loads mod_dav.so. 1205 1206 Next, add this to the *bottom* of your httpd.conf: 1207 1208 <Location /svn/repos> 1209 DAV svn 1210 SVNPath /absolute/path/to/repository 1211 </Location> 1212 1213 This will give anyone unrestricted access to the repository. If 1214 you want limited access, read or write, you add these lines to 1215 the Location block: 1216 1217 AuthType Basic 1218 AuthName "Subversion repository" 1219 AuthUserFile /my/svn/user/passwd/file 1220 1221 And: 1222 1223 a) For a read/write restricted repository: 1224 1225 Require valid-user 1226 1227 b) For a write restricted repository: 1228 1229 <LimitExcept GET PROPFIND OPTIONS REPORT> 1230 Require valid-user 1231 </LimitExcept> 1232 1233 c) For separate restricted read and write access: 1234 1235 AuthGroupFile /my/svn/group/file 1236 1237 <LimitExcept GET PROPFIND OPTIONS REPORT> 1238 Require group svn_committers 1239 </LimitExcept> 1240 1241 <Limit GET PROPFIND OPTIONS REPORT> 1242 Require group svn_committers 1243 Require group svn_readers 1244 </Limit> 1245 1246 ### FIXME Tutorials section refers to old 2.0 docs 1247 These are only a few simple examples. For a complete tutorial 1248 on Apache access control, please consider taking a look at the 1249 tutorials found under "Security" on the following page: 1250 https://httpd.apache.org/docs-2.0/misc/tutorials.html 1251 1252 In order for 'svn cp' to work (which is actually implemented as a 1253 DAV COPY command), mod_dav needs to be able to determine the 1254 hostname of the server. A standard way of doing this is to use 1255 Apache's ServerName directive to set the server's hostname. Edit 1256 your /usr/local/apache2/conf/httpd.conf to include: 1257 1258 ServerName svn.myserver.org 1259 1260 If you are using virtual hosting through Apache's NameVirtualHost 1261 directive, you may need to use the ServerAlias directive to specify 1262 additional names that your server is known by. 1263 1264 If you have configured mod_deflate to be in the server, you can enable 1265 compression support for your repository by adding the following line 1266 to your Location block: 1267 1268 SetOutputFilter DEFLATE 1269 1270 1271 NOTE: If you are unfamiliar with an Apache directive, or not exactly 1272 sure about what it does, don't hesitate to look it up in the 1273 documentation: https://httpd.apache.org/docs-2.2/mod/directives.html. 1274 1275 NOTE: Make sure that the user 'nobody' (or whatever UID the 1276 httpd process runs as) has permission to read and write the 1277 Berkeley DB files! This is a very common problem. 1278 1279 1280 D. Running and Testing 1281 ------------------- 1282 1283 Fire up apache 2: 1284 1285 $ /usr/local/apache2/bin/apachectl stop 1286 $ /usr/local/apache2/bin/apachectl start 1287 1288 Check /usr/local/apache2/logs/error_log to make sure it started 1289 up okay. 1290 1291 Try doing a network checkout from the repository: 1292 1293 $ svn co http://localhost/svn/repos wc 1294 1295 The most common reason this might fail is permission problems 1296 reading the repository db files. If the checkout fails, make 1297 sure that the httpd process has permission to read and write to 1298 the repository. You can see all of mod_dav_svn's complaints in 1299 the Apache error logfile, /usr/local/apache2/logs/error_log. 1300 1301 To run the regression test suite for networked Subversion, see 1302 the instructions in subversion/tests/cmdline/README. 1303 For advice about tracing problems, see "Debugging the server" in 1304 https://subversion.apache.org/docs/community-guide/. 1305 1306 1307 E. Alternative: 'svnserve' and ra_svn 1308 ----------------------------------- 1309 1310 An alternative network layer is libsvn_ra_svn (on the client 1311 side) and the 'svnserve' process on the server. This is a 1312 simple network layer that speaks a custom protocol over plain 1313 TCP (documented in libsvn_ra_svn/protocol): 1314 1315 $ svnserve -d # becomes a background daemon 1316 $ svn checkout svn://localhost/usr/local/svn/repository 1317 1318 You can use the "-r" option to svnserve to set a logical root 1319 for repositories, and the "-R" option to restrict connections to 1320 read-only access. ("Read-only" is a logical term here; svnserve 1321 still needs write access to the database in this mode, but will 1322 not allow commits or revprop changes.) 1323 1324 'svnserve' has built-in CRAM-MD5 authentication (so you can use 1325 non-system accounts), and can also be tunneled over SSH (so you 1326 can use existing system accounts). It's also capable of using 1327 Cyrus SASL if libsasl2 is detected at ./configure time. Please 1328 read chapter 6 in the Subversion Book 1329 (http://svnbook.red-bean.com) for details on these features. 1330 1331 1332 1333IV. PLATFORM-SPECIFIC ISSUES 1334 ======================== 1335 1336 A. Windows XP 1337 ---------- 1338 1339 There is an error in the Windows XP TCP/IP stack which causes 1340 corruption in certain cases. This problem is exposed only 1341 through ra_dav. 1342 1343 The root of the matter is caused by duplicating file handles 1344 between parent and child processes. The httpd Apache group 1345 explains this a lot better: 1346 1347 https://www.apache.org/dist/httpd/binaries/win32/#xpbug 1348 1349 And there's an item about this in the Subversion FAQ: 1350 1351 https://subversion.apache.org/faq.html#windows-xp-server 1352 1353 The only known workaround for now is to update to Windows XP 1354 SP1 (or higher). 1355 1356 1357 B. Mac OS X 1358 -------- 1359 1360 [TBD: Describe BDB 4.0.x problem] 1361 1362 1363 1364V. PROGRAMMING LANGUAGE BINDINGS (PYTHON, PERL, RUBY, JAVA) 1365 ======================================================== 1366 1367 For Python, Perl and Ruby bindings, see the file 1368 1369 ./subversion/bindings/swig/INSTALL 1370 1371 For Java bindings, see the file 1372 1373 ./subversion/bindings/javahl/README 1374