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

Re: [PATCH] v7 Fix #3390 Relative externals not updated during switch

From: Daniel Näslund <daniel_at_longitudo.com>
Date: Wed, 6 Jan 2010 12:53:36 +0100

On Wed, Dec 30, 2009 at 02:11:31PM +0000, Stefan Sperling wrote:
> On Wed, Dec 30, 2009 at 07:45:12AM +0100, Daniel Näslund wrote:
> > + err = svn_wc__node_get_url(&url, cb->ctx->wc_ctx,
> > + abs_parent_dir, cb->pool, cb->pool);
> > +
> > + /* If we're doing an 'svn export' the current dir will not be a
> > + working copy. We can't get the parent_dir. */
> > + if (err)
> > + {
>
> More nitpicking :-P
> Indentation is off below:
>
> > + if (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY)
> > + {
> > + /* Get the URL of the parent directory by appending a portion of
> > + parent_dir to from_url. from_url is the URL for to_path and
> > + to_path is a substring of parent_dir, so append any characters in
> > + parent_dir past strlen(to_path) to from_url (making sure to move
> > + past a '/' in parent_dir, otherwise svn_path_url_add_component()
> > + will error. */
> > + len = strlen(cb->to_path);
> > + if (ib.parent_dir[len] == '/')
> > + ++len;
> > + ib.parent_dir_url = svn_path_url_add_component2(cb->from_url,
> > + ib.parent_dir + len,
> > + cb->pool);
> > + svn_error_clear(err);
> > + }
> > + else
> > + return svn_error_return(err);
> > + }
> > + else
> > + ib.parent_dir_url = url;

Fixed!

[[[
Fix issue #3390, relative externals not updated during switch. As a side
effect - allow externals hash diff functionality to be used with abspaths.

* subversion/libsvn_client/switch.c
  (svn_client__switch_internal): Pass in an external_func to
    svn_wc_crawl_revision5().

* subversion/libsvn_client/externals.c
  (handle_externals_desc_change): Get the url for parent_dir with
    svn_wc__node_get_url(). Does not work for export where the
    parent_dir has no url. Then we resort to the old way of adding the
    parent_dir to the from_url.

* subversion/tests/cmdline/externals_tests.py
  (test_list): Remove XFail from switch_relative_external.

Patch by: Daniel Näslund <daniel{_AT_}longitudo.com>
Review by: stsp, philip
]]]

Daniel

Received on 2010-01-06 12:54:17 CET

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