On Fri, May 6, 2011 at 4:10 PM, Greg Stein <gstein_at_gmail.com> wrote:
> On May 6, 2011 3:58 PM, <pburba_at_apache.org> wrote:
>>
>> Author: pburba
>> Date: Fri May  6 19:58:05 2011
>> New Revision: 1100349
>>
>> URL: http://svn.apache.org/viewvc?rev=1100349&view=rev
>> Log:
>> Follow-up to r1100321, move error for issue #3858 from libsvn_wc to
>> libsvn_client.
>
> 3858 or 3835?
Oops, 3835. I fixed the log. I was working on 3858 recently and it
must have still been rattling around my brain.
> (per reverted comment)
>
>>
>> Suggested by: cmpilato
>>
>> * subversion/libsvn_wc/cleanup.c
>>
>> Â (cleanup_internal): Revert r1100321 and move that logic to...
>>
>> * subversion/libsvn_client/cleanup.c
>>
>> Â (svn_client_cleanup): ...here. Â Also improve the error message wording a
>> Â bit and convert the WC root path in the message to the local style (as
>> Â suggested by gstein).
>>
>> Modified:
>> Â Â subversion/trunk/subversion/libsvn_client/cleanup.c
>> Â Â subversion/trunk/subversion/libsvn_wc/cleanup.c
>>
>> Modified: subversion/trunk/subversion/libsvn_client/cleanup.c
>> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/cleanup.c?rev=1100349&r1=1100348&r2=1100349&view=diff
>>
> ==============================================================================
>> --- subversion/trunk/subversion/libsvn_client/cleanup.c (original)
>> +++ subversion/trunk/subversion/libsvn_client/cleanup.c Fri May  6
> 19:58:05 2011
>> @@ -59,6 +59,24 @@ svn_client_cleanup(const char *path,
>>
>> Â err = svn_wc_cleanup3(ctx->wc_ctx, local_abspath, ctx->cancel_func,
>> Â Â Â Â Â Â Â Â Â Â Â Â ctx->cancel_baton, scratch_pool);
>> + Â if (err && err->apr_err == SVN_ERR_WC_LOCKED)
>> + Â Â {
>> + Â Â Â const char *wcroot_abspath;
>> + Â Â Â svn_error_t *err2 = svn_wc_get_wc_root(&wcroot_abspath,
> ctx->wc_ctx,
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â local_abspath, scratch_pool,
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â scratch_pool);
>> + Â Â Â if (err2)
>> + Â Â Â Â err = Â svn_error_compose_create(err, err2);
>> + Â Â Â else
>> + Â Â Â Â err = svn_error_createf(SVN_ERR_WC_LOCKED, err,
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â _("Working copy locked; trying running "
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â "'svn cleanup' on the root of the
> working "
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â "copy (%s) instead."),
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â svn_dirent_local_style(wcroot_abspath,
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â scratch_pool),
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â scratch_pool);
>> + Â Â }
>> +
>> Â svn_io_sleep_for_timestamps(path, scratch_pool);
>> Â return svn_error_return(err);
>> Â }
>>
>> Modified: subversion/trunk/subversion/libsvn_wc/cleanup.c
>> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/cleanup.c?rev=1100349&r1=1100348&r2=1100349&view=diff
>>
> ==============================================================================
>> --- subversion/trunk/subversion/libsvn_wc/cleanup.c (original)
>> +++ subversion/trunk/subversion/libsvn_wc/cleanup.c Fri May  6 19:58:05
> 2011
>> @@ -142,32 +142,13 @@ cleanup_internal(svn_wc__db_t *db,
>> Â {
>> Â int wc_format;
>> Â const char *cleanup_abspath;
>> - Â svn_error_t *err;
>>
>> Â /* Can we even work with this directory? Â */
>> Â SVN_ERR(can_be_cleaned(&wc_format, db, dir_abspath, scratch_pool));
>>
>> - Â /* Issue #3835: If DIR_ABSPATH is locked indirectly via a recursive
> lock
>> - Â Â on an ancestor, then recommend cleaning up the entire WC. */
>> - Â err = svn_wc__db_wclock_obtain(db, dir_abspath, -1, TRUE,
> scratch_pool);
>> - Â if (err)
>> - Â Â {
>> - Â Â Â if (err->apr_err == SVN_ERR_WC_LOCKED)
>> - Â Â Â Â {
>> - Â Â Â Â Â const char *wcroot_abspath;
>> - Â Â Â Â Â svn_error_t *err2 = svn_wc__db_get_wcroot(&wcroot_abspath, db,
>> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dir_abspath,
>> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â scratch_pool,
>> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â scratch_pool);
>> - Â Â Â Â Â if (err2)
>> - Â Â Â Â Â Â return svn_error_compose_create(err, err2);
>> -
>> - Â Â Â Â Â return svn_error_createf(SVN_ERR_WC_LOCKED, err,
>> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â _("Try cleanup from root of working
> copy "
>> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â "'%s'"), wcroot_abspath,
> scratch_pool);
>> - Â Â Â Â }
>> - Â Â Â return svn_error_return(err);
>> - Â Â }
>> + Â /* ### This fails if ADM_ABSPATH is locked indirectly via a
>> + Â Â ### recursive lock on an ancestor. */
>> + Â SVN_ERR(svn_wc__db_wclock_obtain(db, dir_abspath, -1, TRUE,
> scratch_pool));
>>
>> Â /* Run our changes before the subdirectories. We may not have to recurse
>> Â Â Â if we blow away a subdir. Â */
>>
>>
>
Received on 2011-05-06 22:32:02 CEST