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