You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2010/08/04 17:00:17 UTC
svn commit: r982283 - /subversion/trunk/subversion/libsvn_wc/adm_ops.c
Author: rhuijben
Date: Wed Aug 4 15:00:17 2010
New Revision: 982283
URL: http://svn.apache.org/viewvc?rev=982283&view=rev
Log:
In Single-DB make sure that when we remove a node from wc_db, we also remove
all its children. Or re-adding them might give it its children back.
* subversion/libsvn_wc/adm_ops.c
(revert_entry): Don't assume that we don't have to delete children if there
is no on-disk node.
(svn_wc__internal_remove_from_revision_control): Even though a node is missing,
we still have to remove its children.
Modified:
subversion/trunk/subversion/libsvn_wc/adm_ops.c
Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=982283&r1=982282&r2=982283&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Wed Aug 4 15:00:17 2010
@@ -1534,6 +1534,9 @@ revert_entry(svn_depth_t *depth,
}
else if (kind == svn_wc__db_kind_dir)
{
+#ifndef SVN_WC__SINGLE_DB
+ /* Before single-db we didn't have to perform a recursive delete
+ here. With single-db we really must delete missing nodes */
if (disk_kind == svn_node_none
|| svn_wc__adm_missing(db, local_abspath, pool))
{
@@ -1547,6 +1550,7 @@ revert_entry(svn_depth_t *depth,
pool));
}
else
+#endif
{
SVN_ERR(svn_wc__internal_remove_from_revision_control(
db,
@@ -2045,15 +2049,16 @@ svn_wc__internal_remove_from_revision_co
}
} /* done with file case */
+#ifndef SVN_WC__SINGLE_DB
else if (svn_wc__adm_missing(db, local_abspath, scratch_pool))
{
- /* The directory is missing so don't try to recurse,
- just delete the entry in the parent directory.
-
- ### This case disappears after we move to one DB. */
+ /* The directory is missing so don't try to recurse, in
+ not existing administrative data, just delete the
+ entry in the parent directory. */
SVN_ERR(svn_wc__db_temp_op_remove_entry(db, local_abspath,
scratch_pool));
}
+#endif
else /* looking at THIS_DIR */
{
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
@@ -2076,7 +2081,10 @@ svn_wc__internal_remove_from_revision_co
entry_abspath = svn_dirent_join(local_abspath, entry_name, iterpool);
- /* ### where did the adm_missing and depth_exclude test go?!? */
+ /* ### where did the adm_missing and depth_exclude test go?!?
+
+ ### BH: depth exclude is handled by hidden and missing is ok
+ for this temp_op. */
SVN_ERR(svn_wc__db_node_hidden(&hidden, db, entry_abspath,
iterpool));