You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by David Glasser <gl...@davidglasser.net> on 2007/12/11 01:12:55 UTC

Re: [patch] Issue #3039

On Dec 10, 2007 6:04 PM, Daniel Rall <dl...@collab.net> wrote:
> Quickly sending a patch which appears to fix issue #3039 on my way out the
> door...


The guts of this (svn_wc__adm_extend_lock_to_tree) looks good.  A few
comments:

> Index: subversion/libsvn_wc/lock.c
> ===================================================================

> +/* WC entry walker callbacks for svn_wc__adm_extend_lock_to_tree(). */
> +static svn_wc_entry_callbacks2_t extend_lock_walker =
> +{
> +  extend_lock_found_entry,
> +  extend_lock_handle_error

You can just use svn_wc__walker_default_error_handler here (it's the
same).

> Index: subversion/libsvn_wc/update_editor.c
> ===================================================================
> --- subversion/libsvn_wc/update_editor.c	(revision 28380)
> +++ subversion/libsvn_wc/update_editor.c	(working copy)
> @@ -1110,6 +1110,9 @@
>
>    SVN_ERR(svn_wc_adm_retrieve(&adm_access, eb->adm_access,
>                                parent_path, pool));
> +  /* Deleting PATH requires that any children it has are also locked
> +     (issue #3039). */
> +  SVN_ERR(svn_wc__adm_extend_lock_to_tree(eb->adm_access, pool));

This should be done inside the code that actually *runs* the deletion,
not the code that builds the log, so that this bug fix also fixes the
fact that "svn cleanup" doesn't work *at all* for running delete-entry
loggy items that delete directories which contain directories.

That probably means log.c(log_do_delete_entry), (there might be an
argument for svn_wc_remove_from_revision_control, but I think that's
wrong).

--dave


-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [patch] Issue #3039

Posted by Daniel Rall <dl...@collab.net>.
On Mon, 10 Dec 2007, David Glasser wrote:

> On Dec 10, 2007 6:04 PM, Daniel Rall <dl...@collab.net> wrote:
...
> > Index: subversion/libsvn_wc/lock.c
> > ===================================================================
> 
> > +/* WC entry walker callbacks for svn_wc__adm_extend_lock_to_tree(). */
> > +static svn_wc_entry_callbacks2_t extend_lock_walker =
> > +{
> > +  extend_lock_found_entry,
> > +  extend_lock_handle_error
> 
> You can just use svn_wc__walker_default_error_handler here (it's the
> same).
 
Duh, I only wrote that...  :P

> > Index: subversion/libsvn_wc/update_editor.c
> > ===================================================================
> > --- subversion/libsvn_wc/update_editor.c	(revision 28380)
> > +++ subversion/libsvn_wc/update_editor.c	(working copy)
> > @@ -1110,6 +1110,9 @@
> >
> >    SVN_ERR(svn_wc_adm_retrieve(&adm_access, eb->adm_access,
> >                                parent_path, pool));
> > +  /* Deleting PATH requires that any children it has are also locked
> > +     (issue #3039). */
> > +  SVN_ERR(svn_wc__adm_extend_lock_to_tree(eb->adm_access, pool));
> 
> This should be done inside the code that actually *runs* the deletion,
> not the code that builds the log, so that this bug fix also fixes the
> fact that "svn cleanup" doesn't work *at all* for running delete-entry
> loggy items that delete directories which contain directories.
> 
> That probably means log.c(log_do_delete_entry), (there might be an
> argument for svn_wc_remove_from_revision_control, but I think that's
> wrong).

Good suggestions, Dave.  Patch updated, and committed to trunk in r28389.