subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From phi...@apache.org
Subject svn commit: r905744 - in /subversion/trunk/subversion: libsvn_wc/wc_db.c tests/libsvn_wc/db-test.c
Date Tue, 02 Feb 2010 18:56:22 GMT
Author: philip
Date: Tue Feb  2 18:56:18 2010
New Revision: 905744

URL: http://svn.apache.org/viewvc?rev=905744&view=rev
Log:
Remove an SVN_ERR_ASSERT that can be triggered.  Not all commits trigger
this, it appears to need a sibling (possibly a non-deleted directory) of
the deleted item and it depends on the order in which the committed items
get processed.  copy_tests.py 8 still fails but it gets a bit further.

* subversion/libsvn_wc/wc_db.c
  (svn_wc__db_scan_deletion): Remove assert, return work_del_abspath.

* subversion/tests/libsvn_wc/db-test.c
  (test_scan_deletion): Add example.
  (test_children): Adjust number of children.

Modified:
    subversion/trunk/subversion/libsvn_wc/wc_db.c
    subversion/trunk/subversion/tests/libsvn_wc/db-test.c

Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=905744&r1=905743&r2=905744&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue Feb  2 18:56:18 2010
@@ -4569,9 +4569,14 @@
           /* No row means no WORKING node at this path, which means we just
              fell off the top of the WORKING tree.
 
-             The child cannot be not-present, as that would imply the
-             root of the (added) WORKING subtree was deleted.  */
-          SVN_ERR_ASSERT(child_presence != svn_wc__db_status_not_present);
+             If the child was not-present this implies the root of the
+             (added) WORKING subtree was deleted.  This can occur
+             during post-commit processing when the added parent that
+             was in the WORKING tree has been moved to the BASE tree. */
+          if(work_del_abspath != NULL
+             && child_presence == svn_wc__db_status_not_present
+             && *work_del_abspath == NULL)
+            *work_del_abspath = apr_pstrdup(result_pool, child_abspath);
 
           /* If the child did not have a BASE node associated with it, then
              we're looking at a deletion that occurred within an added tree.

Modified: subversion/trunk/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/db-test.c?rev=905744&r1=905743&r2=905744&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/db-test.c Tue Feb  2 18:56:18 2010
@@ -302,6 +302,17 @@
    "insert into actual_node values ("
    "  1, 'I', '', null, null, null, null, null, 'changelist', null, "
    "'" I_TC_DATA "');"
+   "  "
+   "insert into base_node values ("
+   "  1, 'M', null, null, '', 'normal', 'dir', "
+   "  1, null, null, "
+   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
+   "  null); "
+   "insert into working_node values ("
+   "  1, 'M/M-a', 'M', 'not-present', 'file', "
+   "  null, null, "
+   "  null, null, null, null, null, "
+   "  null, null, null, 0, null, null, '()', 0); "
    ),
 
   WC_METADATA_SQL_13,
@@ -772,7 +783,7 @@
   SVN_ERR(svn_wc__db_base_get_children(&children,
                                        db, local_abspath,
                                        pool, pool));
-  SVN_TEST_ASSERT(children->nelts == 11);
+  SVN_TEST_ASSERT(children->nelts == 12);
   for (i = children->nelts; i--; )
     {
       const char *name = APR_ARRAY_IDX(children, i, const char *);
@@ -784,7 +795,7 @@
   SVN_ERR(svn_wc__db_read_children(&children,
                                    db, local_abspath,
                                    pool, pool));
-  SVN_TEST_ASSERT(children->nelts == 12);
+  SVN_TEST_ASSERT(children->nelts == 13);
   for (i = children->nelts; i--; )
     {
       const char *name = APR_ARRAY_IDX(children, i, const char *);
@@ -1223,6 +1234,20 @@
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "L/L-a",
                                    work_del_abspath, pool));
 
+  /* Root of delete, parent converted to BASE during post-commit. */
+  SVN_ERR(svn_wc__db_scan_deletion(
+            &base_del_abspath,
+            &base_replaced,
+            &moved_to_abspath,
+            &work_del_abspath,
+            db, svn_dirent_join(local_abspath, "M/M-a", pool),
+            pool, pool));
+  SVN_TEST_ASSERT(base_del_abspath == NULL);
+  SVN_TEST_ASSERT(!base_replaced);
+  SVN_TEST_ASSERT(moved_to_abspath == NULL);
+  SVN_TEST_ASSERT(validate_abspath(local_abspath, "M/M-a",
+                                   work_del_abspath, pool));
+
   return SVN_NO_ERROR;
 }
 



Mime
View raw message