François Beausoleil wrote:
>
> What you're both looking for is svn:externals. This is a property you
> set on a directory, which will checkout another portion of a tree.
> See svn help propset for more information, as well as the book.
>
svn:externals, though it may be working to some satisfactory level for
other users and their uses, is not robust enough for my uses.
There are several open source projects that we track and modify to our
needs, many of which also track some other project themselves and have
to tweak those subprojects in order to function. So we have the
following repository layout:
SVNROOT/
our-project1
trunk
tags
branches
our-project2
sub-project1
trunk (our changes to mid-vendor's changes of
vendor's source)
mid-vendor-branches (tracks modifications made by
3rd party to original source)
sub-project2
(similar)
our-project3
.
.
vendor (holds pristine, original source projects)
open-source-proj1
trunk
tags
open-source-proj2
(same)
This sort of setup is necessary for if we want to apply selectively
mid-vendor changes, or anticipate a mid-vendor's release. Also, this
allows several such projects to track something like the linux kernel
while all having a common history (so that we don't have several full
copies of the linux source tree floating around in the repository,
taking up space).
What I would love to be able to do is to make a
repository-internal-symlink from
SVNROOT/our-project2/sub-project1/vendor ->
SVNROOT/vendor/open-source-proj1/trunk.
If I use svn:externals, I can't do
svn ps svn:externals '.
svn://host/SVNROOT/vendor/open-source-proj1/trunk' .
...when in SVNROOT/our-project2/sub-project1/trunk because it can't
assign to itself or somesuch. If instead I do
svn ps svn:externals 'trunk
svn://host/SVNROOT/vendor/open-source-proj1/trunk' .
...when in SVNROOT/our-project2/sub-project1, this doesn't have enough
desired behavior. I want to be able to move things around, and not have
my programmers have to worry about svn:external stuff, indeed not to
even have to know it is there.
The problem is particularly salient when trying to diff and merge. You
can't do it against a svn:externals'd directory because it isn't there
in the repository, something I was trying to get around with the first
example.
What I want and need is something exactly like the unix symlink ability,
where you can tell it's a symlink from ls if you need to, where you can
descend into it however if you need to also, so that if you "symlink
off" a directory to a new location, it doesn't break functionality.
If there is any such functionality existent, I would love to hear it.
Otherwise, I suggest this as a feature request.
Erich Enke
Ruffdogs.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Oct 21 21:10:47 2004