On Feb 12, 2010, at 8:10 AM, Greg Stein wrote: > On Fri, Feb 12, 2010 at 10:39, Matthew Bentham <mj...@artvps.com> wrote: >> I understand from thread "WC-NG: How can we help with 1.7-readiness?" that >> this sort of thing is helpful. I am a massive newbie, please forgive me if >> I do something obviously wrong. > > Can't learn without trying! Thanks for jumping in :-) > >> [[[ >> wc-ng: work towards eliminating svn_wc_entry_t >> >> * subversion/libsvn_client/commit_util.c >> (add_lock_token): Replace a use of svn_wc__maybe_get_entry with >> use of svn_wc__node_get_* >> ]]] > > For log messages, we also like to provide attribution, so at the end > of the above message you would have: > > Patch by: Matthew Bentham <mjb67{_AT_}artvps.com> > >> Index: subversion/libsvn_client/commit_util.c >> =================================================================== >> --- subversion/libsvn_client/commit_util.c (revision 909397) >> +++ subversion/libsvn_client/commit_util.c (working copy) >> @@ -195,19 +195,21 @@ >> { >> struct add_lock_token_baton *altb = walk_baton; >> apr_pool_t *token_pool = apr_hash_pool_get(altb->lock_tokens); >> - const svn_wc_entry_t *entry; >> + const char* lock_token = NULL; >> + const char* url = NULL; > > No need to initialize these to NULL. The node functions will always > set the value, unless it returns an error (in which case, you don't > care about the values). > >> + SVN_ERR(svn_wc__node_get_url(&url, altb->wc_ctx, local_abspath, >> + scratch_pool, scratch_pool)); >> + SVN_ERR(svn_wc__node_get_lock_token(&lock_token, altb->wc_ctx, >> + local_abspath, scratch_pool, scratch_pool)); >> >> - SVN_ERR(svn_wc__maybe_get_entry(&entry, altb->wc_ctx, local_abspath, >> - svn_node_unknown, FALSE, FALSE, >> - scratch_pool, scratch_pool)); >> - >> /* I want every lock-token I can get my dirty hands on! >> If this entry is switched, so what. We will send an irrelevant lock >> token. */ >> - if (entry && entry->url && entry->lock_token) >> - apr_hash_set(altb->lock_tokens, apr_pstrdup(token_pool, entry->url), >> + if (url && lock_token) >> + apr_hash_set(altb->lock_tokens, apr_pstrdup(token_pool, url), >> APR_HASH_KEY_STRING, >> - apr_pstrdup(token_pool, entry->lock_token)); >> + apr_pstrdup(token_pool, lock_token)); > > Rather than dup'ing into the token_pool, you could pass that pool as > the result_pool to the node functions. > > However, I'd go ahead and suggest leaving it as above so that > token_pool won't grow if only one of the values is present. > > Hmm. I would also rejigger things a bit while you're at it: fetch the > lock token first, and if NULL, then early-exit from the function. The > URL can usually be derived, so will be present quite often. The lock > token is the more obvious discriminator. Also, when you fetch the URL, > you'll be able to use token_pool for the call's result_pool. Does that > all make sense?
FWIW, the original patch passes 'make check'. -Hyrum