On Wed, 2010-11-17, phi...@apache.org wrote: > Author: philip > Date: Wed Nov 17 15:53:03 2010 > New Revision: 1036087 > > URL: http://svn.apache.org/viewvc?rev=1036087&view=rev > Log: > Start making upgrade handle SVN_WC__OP_DEPTH, don't create base nodes > for nodes that should not have them. This commit makes two tests FAIL > that used to PASS, but they PASSed erroneously since they were creating > base nodes within an added tree.
Nice. [...] > * subversion/libsvn_wc/upgrade.c > (upgrade_to_wcng): Add dir_baton and parent_baton parameters, pass to > svn_wc__write_upgraded_entries. > (upgrade_working_copy): Add dir_baton, parent_baton and result_pool > parameters, pass to upgrade_to_wcng and upgrade_working_copy. > (svn_wc_upgrade): Pass NULL parent_baton to upgrade_working_copy. [...] > /* */ > static svn_error_t * > -upgrade_working_copy(svn_wc__db_t *db, > +upgrade_working_copy(void **dir_baton, Looks like the dir_baton output of this function (unlike others in this commit) is not needed by callers: they always discard it. - Julian > + void *parent_baton, > + svn_wc__db_t *db, > const char *dir_abspath, > svn_wc_upgrade_get_repos_info_t repos_info_func, > void *repos_info_baton, > @@ -1463,6 +1467,7 @@ upgrade_working_copy(svn_wc__db_t *db, > void *cancel_baton, > svn_wc_notify_func2_t notify_func, > void *notify_baton, > + apr_pool_t *result_pool, > apr_pool_t *scratch_pool) > { > int old_format; > @@ -1507,7 +1512,7 @@ upgrade_working_copy(svn_wc__db_t *db, > } > > > - SVN_ERR(upgrade_to_wcng(db, dir_abspath, old_format, > + SVN_ERR(upgrade_to_wcng(dir_baton, parent_baton, db, dir_abspath, > old_format, > repos_info_func, repos_info_baton, > repos_cache, data, scratch_pool, iterpool)); > > @@ -1520,15 +1525,16 @@ upgrade_working_copy(svn_wc__db_t *db, > for (i = 0; i < subdirs->nelts; ++i) > { > const char *child_abspath = APR_ARRAY_IDX(subdirs, i, const char *); > + void *child_baton; > > svn_pool_clear(iterpool); > > - SVN_ERR(upgrade_working_copy(db, child_abspath, > + SVN_ERR(upgrade_working_copy(&child_baton, *dir_baton, db, > child_abspath, > repos_info_func, repos_info_baton, > repos_cache, data, > cancel_func, cancel_baton, > notify_func, notify_baton, > - iterpool)); > + iterpool, iterpool)); > } > > svn_pool_destroy(iterpool); > @@ -1590,6 +1596,7 @@ svn_wc_upgrade(svn_wc_context_t *wc_ctx, > struct upgrade_data_t data = { NULL }; > svn_skel_t *work_item, *work_items = NULL; > const char *pristine_from, *pristine_to, *db_from, *db_to; > + void *parent_baton; > > if (!is_old_wcroot(local_abspath, scratch_pool)) > return svn_error_createf( > @@ -1611,12 +1618,12 @@ svn_wc_upgrade(svn_wc_context_t *wc_ctx, > scratch_pool, scratch_pool)); > > /* Upgrade the pre-wcng into a wcng in a temporary location. */ > - SVN_ERR(upgrade_working_copy(db, local_abspath, > + SVN_ERR(upgrade_working_copy(&parent_baton, NULL, db, local_abspath, > repos_info_func, repos_info_baton, > apr_hash_make(scratch_pool), &data, > cancel_func, cancel_baton, > notify_func, notify_baton, > - scratch_pool)); > + scratch_pool, scratch_pool)); >