You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/11/11 00:11:41 UTC
svn commit: r1033774 - in /subversion/trunk/subversion/libsvn_wc:
wc-queries.sql wc_db.c
Author: hwright
Date: Wed Nov 10 23:11:40 2010
New Revision: 1033774
URL: http://svn.apache.org/viewvc?rev=1033774&view=rev
Log:
More "don't delete actual nodes with conflict information" work for storing
tree conflict information on the victim nodes.
This brings the number of TREE_CONFLICTS_ON_CHILDREN test failures down to 3.
* subversion/libsvn_wc/wc-queries.sql
(STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT): New.
(STMT_SELECT_ACTUAL_NODE_RECURSIVE): Only search for nodes which have a NULL
conflict data.
* subversion/libsvn_wc/wc_db.c
(db_working_actual_remove): Clear non-conflict data from the actual nodes,
and then only remove nodes without conflict data.
Modified:
subversion/trunk/subversion/libsvn_wc/wc-queries.sql
subversion/trunk/subversion/libsvn_wc/wc_db.c
Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1033774&r1=1033773&r2=1033774&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Wed Nov 10 23:11:40 2010
@@ -346,6 +346,21 @@ SET properties = NULL,
right_checksum = NULL
WHERE wc_id = ?1 and local_relpath = ?2;
+-- STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT
+UPDATE actual_node
+SET properties = NULL,
+ text_mod = NULL,
+ changelist = NULL,
+ tree_conflict_data = NULL,
+ conflict_old = NULL,
+ conflict_new = NULL,
+ conflict_working = NULL,
+ prop_reject = NULL,
+ older_checksum = NULL,
+ left_checksum = NULL,
+ right_checksum = NULL
+WHERE wc_id = ?1 and local_relpath = ?2;
+
-- STMT_UPDATE_NODE_BASE_DEPTH
UPDATE nodes SET depth = ?3
WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0;
@@ -684,7 +699,8 @@ WHERE wc_id = ?1 AND (local_relpath = ?2
-- STMT_SELECT_ACTUAL_NODE_RECURSIVE
SELECT 1
FROM actual_node
-WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#');
+WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
+ AND conflict_data IS NULL;
/* ------------------------------------------------------------------------- */
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1033774&r1=1033773&r2=1033774&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Wed Nov 10 23:11:40 2010
@@ -4679,8 +4679,18 @@ db_working_actual_remove(svn_wc__db_pdh_
SVN_ERR(svn_sqlite__bindf(stmt, "is", pdh->wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step_done(stmt));
+#ifndef TREE_CONFLICTS_ON_CHILDREN
SVN_ERR(svn_sqlite__get_statement(&stmt, pdh->wcroot->sdb,
STMT_DELETE_ACTUAL_NODE));
+#else
+ SVN_ERR(svn_sqlite__get_statement(&stmt, pdh->wcroot->sdb,
+ STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT));
+ SVN_ERR(svn_sqlite__bindf(stmt, "is", pdh->wcroot->wc_id, local_relpath));
+ SVN_ERR(svn_sqlite__step_done(stmt));
+
+ SVN_ERR(svn_sqlite__get_statement(&stmt, pdh->wcroot->sdb,
+ STMT_DELETE_ACTUAL_NODE_WITHOUT_CONFLICT));
+#endif
SVN_ERR(svn_sqlite__bindf(stmt, "is", pdh->wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step_done(stmt));
@@ -4700,7 +4710,8 @@ db_working_actual_remove(svn_wc__db_pdh_
SVN_ERR_ASSERT(! have_row);
SVN_ERR(svn_sqlite__reset(stmt));
}
- /* Postcondition: There are no ACTUAL_NODE rows in this subtree. */
+ /* Postcondition: There are no ACTUAL_NODE rows in this subtree, save
+ those with conflict information. */
{
svn_boolean_t have_row;