Author: philip
Date: Thu Nov 18 19:07:43 2010
New Revision: 1036575
URL: http://svn.apache.org/viewvc?rev=1036575&view=rev
Log:
Stop eliding copyfrom information for SVN_WC__OP_DEPTH. Set op_depth
to a more sensible value in svn_wc__db_op_copy_dir. This gets the
regression test FAILs down to 3, although merge still gets op_depth
wrong in added trees.
* subversion/libsvn_wc/wc_db.h
(svn_wc__db_temp_elide_copyfrom): Make conditional.
* subversion/libsvn_wc/wc_db.c
(elide_copyfrom, get_copyfrom): Make conditional.
(db_op_copy): Make eliding conditional.
(svn_wc__db_op_copy_dir): Make op_depth setting conditional.
* subversion/libsvn_wc/workqueue.c
(run_file_install): Make eliding conditional.
Modified:
subversion/trunk/subversion/libsvn_wc/wc_db.c
subversion/trunk/subversion/libsvn_wc/wc_db.h
subversion/trunk/subversion/libsvn_wc/workqueue.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=1036575&r1=1036574&r2=1036575&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Thu Nov 18 19:07:43 2010
@@ -279,10 +279,12 @@ read_info(svn_wc__db_status_t *status,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+#ifndef SVN_WC__OP_DEPTH
static svn_error_t *
elide_copyfrom(svn_wc__db_pdh_t *pdh,
const char *local_relpath,
apr_pool_t *scratch_pool);
+#endif
static svn_error_t *
scan_addition(svn_wc__db_status_t *status,
@@ -3087,8 +3089,10 @@ db_op_copy(svn_wc__db_pdh_t *src_pdh,
scratch_pool));
}
+#ifndef SVN_WC__OP_DEPTH
/* ### Should do this earlier and insert the node with the right values. */
SVN_ERR(elide_copyfrom(dst_pdh, dst_relpath, scratch_pool));
+#endif
SVN_ERR(add_work_items(dst_pdh->wcroot->sdb, work_items, scratch_pool));
@@ -3447,7 +3451,11 @@ svn_wc__db_op_copy_dir(svn_wc__db_t *db,
iwb.original_revnum = original_revision;
}
+#ifdef SVN_WC__OP_DEPTH
+ iwb.op_depth = relpath_depth(local_relpath);
+#else
iwb.op_depth = 2; /* ### temporary op_depth */
+#endif
iwb.children = children;
iwb.depth = depth;
@@ -8960,6 +8968,7 @@ svn_wc__db_temp_op_make_copy(svn_wc__db_
return SVN_NO_ERROR;
}
+#ifndef SVN_WC__OP_DEPTH
/* Return the copyfrom info for LOCAL_ABSPATH resolving inheritance. */
static svn_error_t *
get_copyfrom(apr_int64_t *copyfrom_repos_id,
@@ -9012,8 +9021,10 @@ get_copyfrom(apr_int64_t *copyfrom_repos
return SVN_NO_ERROR;
}
+#endif
+#ifndef SVN_WC__OP_DEPTH
static svn_error_t *
elide_copyfrom(svn_wc__db_pdh_t *pdh,
const char *local_relpath,
@@ -9117,6 +9128,7 @@ svn_wc__db_temp_elide_copyfrom(svn_wc__d
return SVN_NO_ERROR;
}
+#endif
svn_error_t *
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.h?rev=1036575&r1=1036574&r2=1036575&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.h Thu Nov 18 19:07:43 2010
@@ -2388,12 +2388,14 @@ svn_wc__db_temp_op_make_copy(svn_wc__db_
apr_pool_t *scratch_pool);
+#ifndef SVN_WC__OP_DEPTH
/* Elide the copyfrom information for LOCAL_ABSPATH if it can be derived
from the parent node. */
svn_error_t *
svn_wc__db_temp_elide_copyfrom(svn_wc__db_t *db,
const char *local_abspath,
apr_pool_t *scratch_pool);
+#endif
/* Return the serialized file external info (from BASE) for LOCAL_ABSPATH.
Modified: subversion/trunk/subversion/libsvn_wc/workqueue.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.c?rev=1036575&r1=1036574&r2=1036575&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.c Thu Nov 18 19:07:43 2010
@@ -1516,12 +1516,14 @@ run_file_install(svn_wc__db_t *db,
FALSE /* ignore_enoent */,
scratch_pool));
+#ifndef SVN_WC__OP_DEPTH
/* ### there used to be a call to entry_modify() above, to set the
### TRANSLATED_SIZE and LAST_MOD_TIME values. that function elided
### copyfrom information that snuck into the database. it should
### not be there in the first place, but we can manually get rid
### of the erroneous, inheritable copyfrom data. */
SVN_ERR(svn_wc__db_temp_elide_copyfrom(db, local_abspath, scratch_pool));
+#endif
}
return SVN_NO_ERROR;