[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: How to convert specially set-up subdir tree into svn

From: Ryan Schmidt <subversion-2006c_at_ryandesign.com>
Date: 2006-08-09 20:37:30 CEST

On Aug 9, 2006, at 15:35, Henk Wissink wrote:

> Is there anyone that uses (many) externals who could warn me up-
> front for some pitfalls?
> Is there something I should certainly not overlook?

These points spring to mind:

1. An external can pull in an entire directory, but it cannot pull in
a single file. You'll have to see if your existing structure
accomodates this limitation. If not, you may have to make many
intermediate directories to let you include via external just the
items you need. This may be inconvenient.


2. Externals are always specified by absolute URL. So you'll be
encoding your complete repository URL into each external definition.
If you ever decide to change your repository URL, or change the
method of serving the repository, this will be a problem.


3. If you're going to use Subversion tags to make snapshots of your
development at certain points of time, note that external definitions
do not get tagged as you might expect. That is to say: Suppose today
your repository is at revision 100 and your main line of development
includes an external definition to some other part of the repository,
and you make a tag of this. In a week you've reached revision 200,
and now you check out the tag to see what your repository was like
before. You'll get the main line of development as it was at revision
100, but the external will pull in the other part of the repository
at the current revision 200, not at revision 100 like it was at the


There is a script, svncopy.pl, which you can use to create tags which
correct this limitation.

4. Normally, a successful repository checkout is atomic [1]. That is,
if it takes 20 minutes to check out a working copy, and you start
checking out at 10:00, and someone checks something in at 10:10, then
your checkout which completes at 10:20 will not include that change.
Everything in your working copy will be the way it was in the
repository at 10:00. This is good. However, if there are external
definitions, then each of these are downloaded after the main
checkout, and are atomic as of the time that their checkout was
started. For example, at 10:20, you're done checking out the main
directory structure, and then you start pulling your externals. The
first one will download from the repository the way it looked at
10:20 (not 10:00), the next one maybe at 10:21, etc.

Some of these may not matter to you. You can search the bug tracker
for "externals" to see all the issues that are open and see if they
matter to you.

[1] if it succeeds. If it fails, then it's not atomic; part of your
working copy will be left at the old revision while part of it will
already have been updated to the new one.

To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Aug 9 20:39:03 2006

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.