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

Re: svn commit: r1326696 - in /subversion/trunk/subversion/libsvn_client: add.c client.h commit.c copy.c delete.c prop_commands.c util.c

From: Greg Stein <gstein_at_gmail.com>
Date: Mon, 16 Apr 2012 18:22:18 -0400

On Mon, Apr 16, 2012 at 18:04, Stefan Sperling <stsp_at_elego.de> wrote:
> On Mon, Apr 16, 2012 at 04:41:49PM -0500, Hyrum K Wright wrote:
>> On Mon, Apr 16, 2012 at 4:35 PM, Greg Stein <gstein_at_gmail.com> wrote:
>> > On Mon, Apr 16, 2012 at 13:50,  <hwright_at_apache.org> wrote:
>> >>...
>> >> +++ subversion/trunk/subversion/libsvn_client/util.c Mon Apr 16 17:50:05 2012
>> >>...
>> >> +  /* ### We could probably calculate some of this once, and then cache it for
>> >> +         use in this function. */
>> >> +  SVN_ERR(svn_wc__get_wc_root(&wcroot_abspath, scb->wc_ctx,
>> >> +                              scb->anchor_abspath,
>> >> +                              scratch_pool, scratch_pool));
>> >> +  SVN_ERR(svn_wc__node_get_url(&wcroot_url, scb->wc_ctx, wcroot_abspath,
>> >> +                               scratch_pool, scratch_pool));
>> >> +
>> >> +  relpath = svn_uri_skip_ancestor(wcroot_url, node_url, scratch_pool);
>> >> +  *local_abspath = svn_dirent_join(wcroot_abspath, relpath, result_pool);
>> >
>> > Won't this join() fail in a switched working copy?
>>
>> Honestly, I haven't thought much about it.  Any proposals on how to
>> work around it?
>
> At the very least, you must compare the URL of the node at the calculated
> local_abspath to the original node_url. If they do not match, the
> node at local_abspath is switched, so the node you're looking for is not
> in the WC at the expected location.
>
> The node could be somewhere else, though, at a different path which
> is switched to the original URL you're looking for. Maybe you'll need
> to add a new libsvn_wc API that tries a bit harder to figure out where
> the node could be?

Well... I think the real problem could be that you *already* knew
where it was. The user may have said "svn foo file.c", where file.c is
in a switched subdir. Then it gets switch to repos_relpath, and then
we lose the wc location.

This is why I was tentative with unequivocally stating Ev2 should use
repos_relpath. Bert mentioned a couple scenarios where it could
falter, too. And then I had a couple other concerns around paths in
the copy/move/rotate APIs.

And no... I don't have suggestions. i haven't dived into this since
raising it last week.

Cheers,
-g
Received on 2012-04-17 00:22:50 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.