Introduction to Subversion
Subversion is a version control system that is
designed to be a compelling replacement for CVS
in the open source community. It extends and enhances
CVS' feature set, while maintaining a similar
interface for those already familiar with CVS.
These instructions install the client and server software used to
manipulate a Subversion repository. Creation of
a repository is covered at Running a Subversion Server.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Package Information
Download (HTTP): https://archive.apache.org/dist/subversion/subversion-1.14.2.tar.bz2
Download MD5 sum: 9927b167d1c67d663ca63125907f6f69
Download size: 8.3 MB
Estimated disk space required: 208 MB (add 228 MB for bindings, 52 MB for docs, 1.3 GB for tests)
Estimated build time: 0.5 SBU (Using parallelism=4; add 1.9 SBU for bindings, 35 SBU for tests)
Subversion Dependencies
Required
Apr-Util-1.6.3 and
SQLite-3.44.2
Recommended
Serf-1.3.10 (for handling http:// and https:// URLs)
Optional
Apache-2.4.58,
Boost-1.83.0,
Cyrus SASL-2.1.28,
dbus-1.14.10,
Doxygen-1.9.8 (for generating HTML documentation),
gnome-keyring-42.1,
libsecret-0.21.1,
Py3c-1.4 (for the python bindings, and tests),
Python-3.12.0 (with sqlite support for the tests),
Ruby-3.2.2,
SWIG-4.1.1 (for building Perl, Python and Ruby bindings),
LZ4, and
UTF8proc
Optional (for the Java Bindings)
One of OpenJDK-21.0.1,
Dante or
Jikes,
JUnit 4 (to test the Java bindings) and
apache-ant-1.10.14.
Installation of Subversion
First, adapt some Python scripts to use python3:
grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
Next, adapt the Ruby bindings to Ruby-3.2:
sed -e 's/File.exists?/File.exist?/' \
-i subversion/bindings/swig/ruby/svn/util.rb \
subversion/bindings/swig/ruby/test/test_wc.rb
Install Subversion by running the following
commands:
PYTHON=python3 \
./configure --prefix=/usr \
--disable-static \
--with-apache-libexecdir \
--with-lz4=internal \
--with-utf8proc=internal &&
make
If you have Doxygen-1.9.8 installed and you wish to build the
API documentation, issue:
doxygen doc/doxygen.conf
If you wish to build the Java bindings pass the --enable-javahl
parameter to the configure command. In addition, if
you want to run the Java test suite, you have to specify the location
of the JUnit file by adding
--with-junit=<path to junit jar>
(for
instance --with-junit=/usr/local/java/lib/junit-4.13.jar
)
to configure. The JUnit jar file is no longer
included in apache-ant-1.10.14 and must be downloaded
separately. To build the Java bindings, issue the following command:
make -j1 javahl
If you want to compile Perl,
Python, or Ruby
bindings, issue any of the following command:
make swig-pl # for Perl
make swig-py \
swig_pydir=/usr/lib/python3.12/site-packages/libsvn \
swig_pydir_extra=/usr/lib/python3.12/site-packages/svn # for Python
make swig-rb # for Ruby
To test the results, issue: make check. Four tests in
the commit_tests.py
,
prop_tests.py
, and
update_tests.py
suites are known to fail.
To test the results of any of the SWIG
bindings, you can use any of the following commands:
make check-swig-pl,
make check-swig-py, or
make check-swig-rb.
Now, as the root
user:
make install &&
install -v -m755 -d /usr/share/doc/subversion-1.14.2 &&
cp -v -R doc/* /usr/share/doc/subversion-1.14.2
If you built the Java bindings, issue the following command as the
root
user to install them:
make install-javahl
If you built the Perl,
Python, or
Ruby bindings, issue any of the following
commands as the root
user
to install them:
make install-swig-pl
make install-swig-py \
swig_pydir=/usr/lib/python3.12/site-packages/libsvn \
swig_pydir_extra=/usr/lib/python3.12/site-packages/svn
make install-swig-rb
The java bindings need to be installed in order for the tests to run,
since the tests attempt to look for them in CLASSPATH. To test the
results of the Java bindings build, issue
LANG=C make check-javahl.
Command Explanations
--disable-static
: This switch prevents
installation of static versions of the libraries.
--with-apache-libexecdir
:
If Apache-2.4.58 is installed, the shared
Apache modules are
built. This switch allows to have those modules installed to
Apache's configured module dir instead
of /usr/libexec
. It has no effect
if Apache is not installed.
--with-lz4=internal, --with-utf8proc=internal
:
Remove these switches if you have installed the optional dependencies.
--enable-javahl
: enables compilation of Java high level
bindings. Running make javahl is necessary to do
the compilation.
--with-junit=<location of the junit jar file>
:
gives the location of the junit jar, otherwise the javahl tests cannot
be run.
--disable-gmock
: Do not use the Googlemock testing
framework.