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

Re: svn commit: r26561 - trunk/subversion/libsvn_wc

From: Erik Huelsmann <ehuels_at_gmail.com>
Date: 2007-09-15 12:01:11 CEST

On 9/13/07, David James <james@cs.toronto.edu> wrote:
> On 9/12/07, dionisos@tigris.org <dionisos@tigris.org> wrote:
> > + /* Then maybe it was a directory? */
> > + svn_error_clear(err);
> > if (cancel_func)
> > SVN_ERR(cancel_func(cancel_baton));
> >
> > - SVN_ERR(svn_io_remove_dir2(path, FALSE, pool));
> > + err = svn_io_remove_dir2(path, FALSE, pool);
> >
> > - if (cancel_func)
> > - SVN_ERR(cancel_func(cancel_baton));
> > + if (err)
> > + {
> > + /* We're unlikely to end up here. But we need this fallback
> > + to make sure we report the right error *and* try the
> > + correct deletion at least once. */
> > + svn_node_kind_t kind;
> >
> > - break;
> > + svn_error_clear(err);
> > + SVN_ERR(svn_io_check_path(path, &kind, pool));
> > + if (kind == svn_node_file)
> > + SVN_ERR(svn_io_remove_file(path, pool));
> > + else if (kind == svn_node_dir)
> > + {
> > + if (cancel_func)
> > + SVN_ERR(cancel_func(cancel_baton));
>
> It looks like you changed the cancel func semantics slightly here. Was
> this intentional?
>
> Previously, we used the following algorithm:
> - call the cancel func
> - delete the directory
> - if the directory was deleted successfully, call the cancel func
> again (presumably to check if the user pressed the cancel button while
> we were off deleting a big directory of files)
>
> Now, we use the following algorithm instead:
> - call the cancel func
> - delete the directory
> - if the directory was NOT deleted successfully, call the cancel func again

Right. No, that was not intentional. But, having a look at it, I think
it's better to pass the cancel func into svn_io_remove_dir() anyway. I
also see this function is new in 1.5, so it's not a reason to an
interface rev. All in all I think it's a good moment to allow this
long-running function to start to be cancelable (especially on Windows
with its retry loop, this function can potentially take a **loooong**
time to complete)

Thanks for the heads up.

bye,

Erik.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Sep 15 11:57:34 2007

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.