On Thu, May 14, 2009 at 19:11, Hyrum K. Wright <hyrum_at_hyrumwright.org> wrote:
>...
> +++ trunk/subversion/libsvn_wc/adm_ops.c     Thu May 14 10:11:52 2009     (r37727)
>...
> Â Â Â /* Ignore the "this dir" entry. */
> - Â Â Â if (! strcmp(name, SVN_WC_ENTRY_THIS_DIR))
> + Â Â Â if (! strcmp(child_basename, SVN_WC_ENTRY_THIS_DIR))
> Â Â Â Â continue;
No need. You're iterating over *children*. Remember, this is a "real"
API. You don't have parents mixed in with children. ;-)
>...
> Â Â Â /* If a file, or deleted, excluded or absent dir, then tweak the
> Â Â Â Â Â entry but don't recurse. */
> - Â Â Â if ((current_entry->kind == svn_node_file)
> - Â Â Â Â Â || (current_entry->deleted || current_entry->absent
> - Â Â Â Â Â Â Â || current_entry->depth == svn_depth_exclude))
> + Â Â Â if (kind == svn_wc__db_kind_file
> + Â Â Â Â Â Â || status == svn_wc__db_status_not_present
> + Â Â Â Â Â Â || status == svn_wc__db_status_absent
> + Â Â Â Â Â Â || child_depth == svn_depth_exclude)
I don't think this entirely matches. Consider that in "Entry Land",
you could have DELETED and schedule-add. With wc_db, the status would
be "added" rather than "not present".
And regardless, the comment needs to be updated.
>...
> @@ -184,19 +188,18 @@ tweak_entries(svn_wc_adm_access_t *dir_a
> Â Â Â Â Â if (remove_missing_dirs
> Â Â Â Â Â Â Â && svn_wc__adm_missing(dir_access, child_path))
> Â Â Â Â Â Â {
> - Â Â Â Â Â Â Â if (current_entry->schedule != svn_wc_schedule_add
> + Â Â Â Â Â Â Â if (status == svn_wc__db_status_added
> Â Â Â Â Â Â Â Â Â && !excluded)
Do you also need to check for an obstructed add here?
> Â Â Â Â Â Â Â Â {
> - Â Â Â Â Â Â Â Â Â SVN_ERR(svn_wc__entry_remove(db, child_abspath, subpool));
> - Â Â Â Â Â Â Â Â Â apr_hash_set(entries, name, APR_HASH_KEY_STRING, NULL);
> + Â Â Â Â Â Â Â Â Â SVN_ERR(svn_wc__entry_remove(db, child_abspath, iterpool));
>
> Â Â Â Â Â Â Â Â Â if (notify_func)
> Â Â Â Â Â Â Â Â Â Â {
> Â Â Â Â Â Â Â Â Â Â Â notify = svn_wc_create_notify(child_path,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â svn_wc_notify_delete,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â subpool);
> - Â Â Â Â Â Â Â Â Â Â Â notify->kind = current_entry->kind;
> - Â Â Â Â Â Â Â Â Â Â Â (* notify_func)(notify_baton, notify, subpool);
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â iterpool);
> + Â Â Â Â Â Â Â Â Â Â Â notify->kind = kind;
> + Â Â Â Â Â Â Â Â Â Â Â (* notify_func)(notify_baton, notify, iterpool);
Whoops! Mismatch of kind types here.
>...
Cheers,
-g
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2261811
Received on 2009-05-14 21:11:10 CEST