On Fri, Jan 22, 2010 at 08:51:35PM +0100, Daniel Näslund wrote: > On Fri, Jan 22, 2010 at 01:04:13PM -0500, C. Michael Pilato wrote: > > If this is all it takes to fix this issue, I'm going to cry while deleting > > each and every file from the 'issue-3390-dev' branch one commit at a time. > > Seriously? This is the whole fix? > > I hope so... > > You suggested this strategy in the issue tracker (your strategy with > number, my attempt at solution between): > > 1. while crawling the working copy state, collect all the externals > definitions (pretty much as-is) *and the repository URLs of the directories on > which they are set*. > > The thing is we weren't crawling the wc collecting externals when we > were doing a merge. We passed NULL for traversal_info.
Typo here. s/merge/switch/ > 2. do the update/switch, remembering any changes to externals definitions that > come down from the server. > > We remember all externals, not just the changed ones. > > 3. compare the pre-op externals definitions with the post-op ones, and for any > that have changed (been added, been removed, or been modified *paying > attention > to changes in the repos URL of the container directory*) do the appropriate > thing. > > libsvn_client/externals.c is capable of detecting changes in the repos > URL of the container directory. > > I tried a _lot_ of things before I wrote this patch and I agree that it > looks too easy. > > Daniel > > > > > Daniel Näslund wrote: > > > Hi Stefan! > > > > > > This is supposed to be a backport. It is diffed against 1.6.x. > > > > > > make check passed. > > > > > > [[[ > > > Fix issue #3390, relative externals not updated during switch. > > > > > > * subversion/libsvn_client/switch.c > > > (svn_client__switch_internal): Pass in a traversal_info to > > > svn_wc_crawl_revision4(). > > > > > > * subversion/tests/cmdline/externals_tests.py > > > (switch_relative_external): New. > > > (test_list): Add new test. > > > > > > Patch by: Daniel Näslund <daniel{_AT_}longitudo.com> > > > ]]]