On Mon, Jun 28, 2010 at 16:04, <rhuij...@apache.org> wrote: >... > +++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Mon Jun 28 20:04:22 2010 >... > @@ -1332,6 +1338,11 @@ svn_wc_add4(svn_wc_context_t *wc_ctx, > repos_root_url, repos_root_url, > repos_uuid, 0, > depth, scratch_pool)); > + > + /* ### The entries based code still needs the incomplete base record, > + ### remove it for the direct db code. */ > + if (!copyfrom_url) > + SVN_ERR(svn_wc__db_base_remove(db, local_abspath, scratch_pool));
"direct db" ?? ... did you mean single db? And I think the comment should explain that area just a bit more: that we create an administrative area with a single row in BASE_NODE, and then you wipe out that row, leaving a database with no node information. >... > +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon Jun 28 20:04:22 2010 > @@ -3071,12 +3071,20 @@ svn_wc__db_op_add_directory(svn_wc__db_t > > err = navigate_to_parent(&pdh, db, pdh, svn_sqlite__mode_readwrite, > scratch_pool); > - if (err) > + if (err && err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY) > { > - /* Prolly fell off the top of the wcroot. Just call it a day. */ > + /* Not registered in the parent; register as addition */ > svn_error_clear(err); > - return SVN_NO_ERROR; > + > + SVN_ERR(svn_wc__db_pdh_parse_local_abspath(&pdh, &local_relpath, > db, > + svn_dirent_dirname(local_abspath, > scratch_pool), > + svn_sqlite__mode_readwrite, scratch_pool, > + scratch_pool)); > + > + VERIFY_USABLE_PDH(pdh); > } > + else > + SVN_ERR(err); I don't understand this part. navigate_to_parent() doesn't look for the child in the parent, so "not registered in the parent" is an incorrect statement. The only real error is that you moved out of the working copy. I think there is something more subtle going on here, and your comments and code are not following that. Your explicit call to parse_local_abspath is relatively bogus: navigate_ot_parent does that internally. Please re-investigate this change. I don't think it should be necessary at all. Cheers, -g