Hi Johan,

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?

Thanks,
Dan




From:   Johan Corveleyn <jcor...@gmail.com>
To:     dlel...@rockwellcollins.com
Cc:     "users@subversion.apache.org" <users@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,  <dlel...@rockwellcollins.com> wrote:
> Hello everyone,
>
> In an attempt to work around the slow performance issues with externals, 
I'm
> trying to perform selective updates on external files without performing 
an
> "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 
/bar2/,
> and commit the property change, I'd hope that an "svn update foo.c" 
would
> 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 
hope
> to perform an "svn update foo.c" to get the latest version referenced by 
the
> svn:externals.

This looks similar to this issue:

  http://subversion.tigris.org/issues/show_bug.cgi?id=4001 (update
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 
without
> 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":

  http://subversion.tigris.org/issues/show_bug.cgi?id=3311 (externals
are not created unless depth=infinity)

But I'm not sure (perhaps that issue is only about dir externals).

-- 
Johan


Reply via email to