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