I think you are spot on on both issues - thank you.
The performance issue relates to SVN externals stem, in my case, from new
connections for each http request for externals versus keeping an open one
for non-externals. Each connection results in a second or so delay.
Multiply this by hundreds and updates that would take seconds, now takes
ten minutes. There's been quite a bit of discussion about pooling
connections I believe, but I don't know the current state of this effort
or if its in any plan.
We're attempting to work around this by updating the subversion properties
with svn update . --depth empty --ignore-externals and iterating over the
externals and comparing to our local revision. If we see a difference, we
update the file. This is the behavior I'd like to see externals take in
the end (I'm sure there are good reasons for the current methodology).
This issue and another issue that can corrupt the working copy are
creating some barriers for us.
Externals are becoming more and more important as we look to finer grained
product line sharing of code.
All that said, is there a work around to convincing SVN to recreate the
file without a full fledge update?
From: Johan Corveleyn <jcorvel_at_gmail.com>
Cc: "users_at_subversion.apache.org" <users_at_subversion.apache.org>
Date: 08/10/2013 03:15 PM
Subject: Re: How to change paths on an external file without a full
update --depth infinity?
On Sat, Aug 10, 2013 at 1:07 AM, <dlellis_at_rockwellcollins.com> wrote:
> Hello everyone,
> In an attempt to work around the slow performance issues with externals,
> trying to perform selective updates on external files without performing
> "svn update --depth infinity".
First: what "slow performance issues with externals"? Can you give
some concrete numbers, or some references to other posts about this?
What svn version are you using? Is this slowness a new problem?
> If I update the path on an external for foo.c to be from /bar1/ to
> and commit the property change, I'd hope that an "svn update foo.c"
> result in foo.c being changed from /bar1/ to /bar2/, but it gets deleted
> instead. I understand why foo.c gets deleted (/bar1/foo.c is different
> pedigree than /bar2/foo.c despite the same file name), but would really
> to perform an "svn update foo.c" to get the latest version referenced by
This looks similar to this issue:
fails to replace a file external with an actual node)
It's about replacing a file external with a "normal" versioned node,
in one update. But your description might be some other manifestation
of the same problem ... not sure.
> How can I get svn to fetch me the file referenced in svn:externals
> performing an "svn update --depth infinity"?
> Remind me again why externals are only processed when depth is infinity?
I suppose this issue is the "reason":
are not created unless depth=infinity)
But I'm not sure (perhaps that issue is only about dir externals).
Received on 2013-08-11 02:29:41 CEST