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

Re: Improving support for copy and move

From: Garrett Rooney <rooneg_at_electricjellyfish.net>
Date: 2006-05-19 20:12:36 CEST

On 5/19/06, Paul Burba <paulb@softlanding.com> wrote:

> Garrett,
>
> Thanks for taking a look at this.
>
> I found one problem with your patch that move_file_within_moved_dir didn't
> test for: Moving a file within a moved directory where that file is not in
> the root of the moved directory...
>
> ...Hmmm, not sure that made sense, if not, here's an example using the
> good old pristine greek WC tree as a starting point:
>
> svn mv A\D A\B\F\D_moved
> svn mv A\B\F\D_moved\G\tau A\B\F\D_moved\G\tau_moved
> c:\svn\svn.trunk.copymove\src-trunk.collabnet.trunk\subversion\libsvn_wc\lock.c:972:
> (apr_err=155005)
> svn: Unable to lock 'A\B\F\D_moved'
>
> Problem is that svn_wc_copy2() calls copy_file_administratively() with the
> svn_wc_adm_access_t *src_access for "A/B/F/D_moved/G". Your tweak in
> copy_file_administratively() climbs up the WC tree and calls
> svn_wc_adm_retrieve() looking for the entry for "A/B/F/D_moved" which
> doesn't exist in src_access and causes the SVN_ERR_WC_NOT_LOCKED error.
>
> I'm working on a fix based on your patch and expanding
> move_file_within_moved_dir and move_dir_within_moved_dir to test this
> scenario. In the meantime, any words of wisdom are appreciated.

It seems like it should be possible to avoid that case by checking to
see if parent_path is a child of src_path, and if not getting the
access baton some other way (svn_wc_adm_open3 or something like that).
 I haven't actually tried to make this work yet though, so YMMV ;-)

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri May 19 20:13:15 2006

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