Checkout
rhuijben
committed
on 26 Jul 12
Replace the very wc-1.0 style svn_wc__internal_remove_from_revision_control
function with an atomic wc-ng function. This makes operations li… Show more
Replace the very wc-1.0 style svn_wc__internal_remove_from_revision_control

function with an atomic wc-ng function. This makes operations like reducing the

depth of a working copy or removing externals from a wc atomic by performing

a db operation and installing workqueue items.

* subversion/libsvn_client/externals.c

 (relegate_dir_external): Obtain lock here that was obtained in the caller.

   Properly handle working copy renames.

 (switch_dir_external): Remove function that has been moved to the callee.

* subversion/libsvn_wc/adm_ops.c

 (process_committed_leaf): Update caller.

* subversion/libsvn_wc/crop.c

 (includes): Include workqueue.h.

 (IGNORE_LOCAL_MOD): Remove now unused macro.

 (crop_children): Use db operation directly.

 (svn_wc_exclude): Use db operation directly. Avoid second db operation

   by passing absent information.

 (svn_wc_crop_tree2): Update caller. Run workqueue.

* subversion/libsvn_wc/externals.c

 (svn_wc__external_remove): If we leave an external, leave the whole external

    by using the fail early mode.

* subversion/libsvn_wc/wc-queries.sql

 (STMT_SELECT_WORKING_PRESENT,

  STMT_DELETE_NODE_RECURSIVE,

  STMT_DELETE_NODE): New queries.

* subversion/libsvn_wc/wc_db.c

 (remove_node_baton): Add fields for new options.

 (remove_node_txn): Add code to create workqueue items for nodes that exist

   on disk. Provide cancellation checking when checking for changes.

   Allow setting excluded and not-present.

 (svn_wc__db_op_remove_node): Update caller.

* subversion/libsvn_wc/wc_db.h

 (svn_wc__db_op_remove_node): Update prototype and documentation.

Show less