From: Olivier Biot
| I'll post my compilation story later on :)
You don't need Berkeley DB or Apache if only building the svn client
and you don't want to run a local repository. Just pass --with-ssl to
configure if you want encryption support in the client. Compilation is
a piece of cake, although on my system libtool spitted out some
warnings about static/shared libraries it couldn't locate (although
those were available at the place where libtool was informed to look).
For the people that only believe when seeing output of the compiled
svn:
Eigenaar@cartagena ~/ethereal/svn/subversion-1.0.0
$ find . -name svn.exe
./subversion/clients/cmdline/svn.exe
Eigenaar@cartagena ~/ethereal/svn/subversion-1.0.0
$ ./subversion/clients/cmdline/svn --version
svn, version 1.0.0
compiled Mar 4 2004, 00:48:44
Copyright (C) 2000-2004 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
The following repository access (RA) modules are available:
* ra_dav : Module for accessing a repository via WebDAV (DeltaV)
protocol.
- handles 'http' schema
* ra_local : Module for accessing a repository on local disk.
- handles 'file' schema
* ra_svn : Module for accessing a repository using the svn network
protocol.
- handles 'svn' schema
Oh, one remark: I strongly suggest reading the SVN FAQ
(http://subversion.tigris.org/project_faq.html). One excerpt reads as
follows:
<<<
I'm trying to look at an old version of my file, but svn says
something about "path not found". What's going on?
A nice feature of Subversion is that the repository understands copies
and renames, and preserves the historical connections. For example, if
you copy /trunk to /branches/mybranch, then the repository understands
that every file in the branch has a "predecessor" in the trunk.
Running svn log --verbose will show you the historical copy, so you
can see the rename:
r7932 | joe | 2003-12-03 17:54:02 -0600 (Wed, 03 Dec 2003) | 1 line
Changed paths:
A /branches/mybranch (from /trunk:7931)
Unfortunately, while the repository is aware of copies and renames,
almost all the svn client subcommands are not aware. Commands like svn
diff, svn merge, and svn cat ought to understand and follow renames,
but don't yet do this. It's scheduled as post-1.0 feature, currently
issue #1093. For example, if you ask svn diff to compare two earlier
versions of /branches/mybranch/foo.c, the command will not
automatically understand that the task actually requires comparing two
versions of /trunk/foo.c, due to the rename. Instead, you'll see an
error about how the branch-path doesn't exist in the earlier
revisions.
The workaround for all problems of this sort is to do the legwork
yourself. That is: you need to be aware of any renamed paths, discover
them yourself using svn log -v, and then provide them explicitly to
the svn client. For example, instead of running
$ svn diff -r 1000:2000 http://host/repos/branches/mybranch/foo.c
svn: Filesystem has no item
svn: '/branches/mybranch/fooc..c' not found in the repository at
revision 1000
...you would instead run
$ svn diff -r1000:2000 http://host/repos/trunk/foo.c
>>>
Regards,
Olivier