Philip Martin <philip.mar...@wandisco.com> writes:

> "Hyrum K. Wright" <hyrum_wri...@mail.utexas.edu> writes:
>
>> On Nov 17, 2009, at 10:18 AM, Philip Martin wrote:
>>
>>> Philip Martin <philip.mar...@wandisco.com> writes:
>>> 
>>> r879744 did this:
>>> 
>>> -  SVN_ERR(svn_wc__adm_open_in_context(&adm_access, wc_ctx, path, TRUE, -1,
>>> -                                      cancel_func, cancel_baton, pool));
>>> -  err = svn_wc_remove_from_revision_control(adm_access,
>>> -                                            SVN_WC_ENTRY_THIS_DIR,
>>> -                                            TRUE, FALSE,
>>> -                                            cancel_func,
>>> -                                            cancel_baton,
>>> -                                            pool);
>>> +  SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
>>> +  err = svn_wc_remove_from_revision_control2(wc_ctx, local_abspath,
>>> +                                             TRUE, FALSE,
>>> +                                             cancel_func, cancel_baton,
>>> +                                             pool);
>>> 
>>> The change was made to remove an access baton from the client code.
>>> However inside the remove function the database needs to have been
>>> opened and the code above fails because no open has taken place.
>>> Where does the responsibility for opening the database lie?  Should
>>> the client do it before calling the wc function, or should the wc
>>> function do it on demand?  Looking at the current wc-ng API there
>>> doesn't seem to be a suitable open function for the client to call,
>>> everything still seems to be geared to access batons.
>>
>> The client shouldn't even *know* about the wc_db.  All the client
>> has is an opaque svn_wc_context_t which it uses to do working copy
>> operations.
>
> So the answer to my question is that the wc library opens the
> databases as and when needed, on demand.

How is locking supposed to work?  I have a better fix for the SEGV
than r881265, but without the call to svn_wc__adm_open_in_context the
on demand locks are read-only.  I don't need the access baton, just
the write lock.  I suppose libsvn_wc is supposed to upgrade read locks
to write locks on demand as well?

-- 
Philip

Reply via email to