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/10 15:05:26 UTC
svn commit: r983978 - in /subversion/trunk/subversion/libsvn_wc: props.c
workqueue.c workqueue.h
Author: rhuijben
Date: Tue Aug 10 13:05:25 2010
New Revision: 983978
URL: http://svn.apache.org/viewvc?rev=983978&view=rev
Log:
Following up on r983969, make the SVN__SUPPORT_BASE_MERGE code
update the database directly instead of via a wq item. This code
is not (and most likely will never be) used.
(See errata notes/api-errata/wc006.txt)
* subversion/libsvn_wc/props.c
(queue_install_props): Remove function.
(svn_wc__perform_props_merge): Install properties directly.
* subversion/libsvn_wc/workqueue.c
(OP_INSTALL_PROPERTIES): Remove define.
(run_install_properties,
svn_wc__wq_add_install_properties): Remove functions.
(dispatch_table): Remove OP_INSTALL_PROPERTIES.
* subversion/libsvn_wc/workqueue.h
(svn_wc__wq_add_install_properties): Remove function.
Modified:
subversion/trunk/subversion/libsvn_wc/props.c
subversion/trunk/subversion/libsvn_wc/workqueue.c
subversion/trunk/subversion/libsvn_wc/workqueue.h
Modified: subversion/trunk/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/props.c?rev=983978&r1=983977&r2=983978&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/props.c (original)
+++ subversion/trunk/subversion/libsvn_wc/props.c Tue Aug 10 13:05:25 2010
@@ -163,78 +163,6 @@ svn_wc__get_prejfile_abspath(const char
return SVN_NO_ERROR;
}
-
-/* See props.h */
-#ifdef SVN__SUPPORT_BASE_MERGE
-
-/* Add a working queue item to install PROPS and, if INSTALL_PRISTINE_PROPS is
- TRUE, BASE_PROPS for the LOCAL_ABSPATH in DB, updating the node to reflect
- the changes. PRISTINE_PROPS must be supplied even if INSTALL_PRISTINE_PROPS
- is FALSE.
-
- Use SCRATCH_POOL for temporary allocations. */
-static svn_error_t *
-queue_install_props(svn_wc__db_t *db,
- const char *local_abspath,
- svn_wc__db_kind_t kind,
- apr_hash_t *pristine_props,
- apr_hash_t *props,
- svn_boolean_t install_pristine_props,
- apr_pool_t *scratch_pool)
-{
- apr_array_header_t *prop_diffs;
- const char *prop_abspath;
- svn_skel_t *work_item;
-
- SVN_ERR_ASSERT(pristine_props != NULL);
-
- /* Check if the props are modified. */
- SVN_ERR(svn_prop_diffs(&prop_diffs, props, pristine_props, scratch_pool));
-
- /* Save the actual properties file if it differs from base. */
- if (prop_diffs->nelts == 0)
- props = NULL; /* Remove actual properties*/
-
- if (install_pristine_props)
- {
- /* Write out a new set of pristine properties. */
- SVN_ERR(sv
- SVN_ERR(svn_wc__prop_path(&prop_abspath, local_abspath, kind,
- svn_wc__props_base, scratch_pool));
- SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
- prop_abspath,
- pristine_props,
- scratch_pool));
- SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
- }
-
- /* For the old school: write the properties into the "working" (aka ACTUAL)
- location. Note that PROPS may be NULL, indicating a removal of the
- props file. */
- SVN_ERR(svn_wc__prop_path(&prop_abspath, local_abspath, kind,
- svn_wc__props_working, scratch_pool));
- SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
- prop_abspath,
- props,
- scratch_pool));
- SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
-
- /* ### this is disappearing. for now, it is a delayed call to put
- ### properties into wc_db. */
- if (!install_pristine_props)
- pristine_props = NULL; /* Don't change the pristine properties */
- SVN_ERR(svn_wc__wq_add_install_properties(db,
- local_abspath,
- pristine_props,
- props,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-#endif /* SVN__SUPPORT_BASE_MERGE */
-
-
/* */
static svn_error_t *
immediate_install_props(svn_wc__db_t *db,
@@ -447,9 +375,35 @@ svn_wc__perform_props_merge(svn_wc_notif
/* See props.h */
#ifdef SVN__SUPPORT_BASE_MERGE
- SVN_ERR(queue_install_props(db, local_abspath, kind,
- new_base_props, new_actual_props,
- base_merge, pool));
+ {
+ svn_wc__db_status_t status;
+ svn_boolean_t have_base;
+ apr_array_header_t *prop_diffs;
+
+ SVN_ERR(svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ &have_base, NULL, NULL, NULL,
+ db, local_abspath, pool, pool));
+
+ if (status == svn_wc__db_status_added)
+ SVN_ERR(svn_wc__db_temp_working_set_props(db, local_abspath,
+ new_base_props, pool));
+ else
+ SVN_ERR(svn_wc__db_temp_base_set_props(db, local_abspath,
+ new_base_props, pool));
+
+ /* Check if the props are modified. */
+ SVN_ERR(svn_prop_diffs(&prop_diffs, actual_props, new_base_props, pool));
+
+ /* Save the actual properties file if it differs from base. */
+ if (prop_diffs->nelts == 0)
+ SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, NULL, NULL, NULL,
+ pool));
+ else
+ SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, actual_props,
+ NULL, NULL, pool));
+ }
#else
if (base_merge)
return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
Modified: subversion/trunk/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.c?rev=983978&r1=983977&r2=983978&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.c Tue Aug 10 13:05:25 2010
@@ -49,7 +49,6 @@
* (local_abspath, revnum, date, [author], [checksum],
* [dav_cache/wc_props], keep_changelist, [tmp_text_base_abspath]). */
#define OP_POSTCOMMIT "postcommit"
-#define OP_INSTALL_PROPERTIES "install-properties-2"
#define OP_FILE_INSTALL "file-install"
#define OP_FILE_REMOVE "file-remove"
#define OP_FILE_MOVE "file-move"
@@ -1588,119 +1587,6 @@ svn_wc__wq_add_postcommit(svn_wc__db_t *
/* ------------------------------------------------------------------------ */
-/* OP_INSTALL_PROPERTIES */
-
-/* See props.h */
-#ifdef SVN__SUPPORT_BASE_MERGE
-
-/* Process the OP_INSTALL_PROPERTIES work item WORK_ITEM.
- * See svn_wc__wq_add_install_properties() which generates this work item.
- * Implements (struct work_item_dispatch).func. */
-static svn_error_t *
-run_install_properties(svn_wc__db_t *db,
- const svn_skel_t *work_item,
- const char *wri_abspath,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *scratch_pool)
-{
- const svn_skel_t *arg = work_item->children->next;
- const char *local_abspath;
- apr_hash_t *base_props;
- apr_hash_t *actual_props;
-
- /* We need a NUL-terminated path, so copy it out of the skel. */
- local_abspath = apr_pstrmemdup(scratch_pool, arg->data, arg->len);
-
- arg = arg->next;
- if (arg->is_atom)
- base_props = NULL;
- else
- SVN_ERR(svn_skel__parse_proplist(&base_props, arg, scratch_pool));
-
- arg = arg->next;
- if (arg->is_atom)
- actual_props = NULL;
- else
- SVN_ERR(svn_skel__parse_proplist(&actual_props, arg, scratch_pool));
-
- if (base_props != NULL)
- {
- svn_boolean_t written = FALSE;
-
- {
- svn_error_t *err;
-
- /* Try writing to the WORKING tree first. */
- err = svn_wc__db_temp_working_set_props(db, local_abspath,
- base_props,
- scratch_pool);
- if (err)
- {
- if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
- return svn_error_return(err);
- svn_error_clear(err);
- /* The WORKING node is not present. */
- }
- else
- {
- /* The WORKING node is present, and we wrote the props. */
- written = TRUE;
- }
- }
-
- if (!written)
- SVN_ERR(svn_wc__db_temp_base_set_props(db, local_abspath,
- base_props, scratch_pool));
- }
-
- /* Okay. It's time to save the ACTUAL props. */
- SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, actual_props,
- NULL, NULL, scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-
-svn_error_t *
-svn_wc__wq_add_install_properties(svn_wc__db_t *db,
- const char *local_abspath,
- apr_hash_t *base_props,
- apr_hash_t *actual_props,
- apr_pool_t *scratch_pool)
-{
- svn_skel_t *work_item = svn_skel__make_empty_list(scratch_pool);
- svn_skel_t *props;
-
- if (actual_props != NULL)
- {
- SVN_ERR(svn_skel__unparse_proplist(&props, actual_props, scratch_pool));
- svn_skel__prepend(props, work_item);
- }
- else
- svn_skel__prepend_str("", work_item, scratch_pool);
-
- if (base_props != NULL)
- {
- SVN_ERR(svn_skel__unparse_proplist(&props, base_props, scratch_pool));
- svn_skel__prepend(props, work_item);
- }
- else
- svn_skel__prepend_str("", work_item, scratch_pool);
-
- svn_skel__prepend_str(local_abspath, work_item, scratch_pool);
- svn_skel__prepend_str(OP_INSTALL_PROPERTIES, work_item, scratch_pool);
-
- SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-#endif /* SVN__SUPPORT_BASE_MERGE */
-
-
-/* ------------------------------------------------------------------------ */
-
/* OP_FILE_INSTALL */
/* Process the OP_FILE_INSTALL work item WORK_ITEM.
@@ -2488,11 +2374,6 @@ static const struct work_item_dispatch d
{ OP_KILLME, run_killme },
#endif
-/* See props.h */
-#ifdef SVN__SUPPORT_BASE_MERGE
- { OP_INSTALL_PROPERTIES, run_install_properties },
-#endif
-
/* Sentinel. */
{ NULL }
};
Modified: subversion/trunk/subversion/libsvn_wc/workqueue.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.h?rev=983978&r1=983977&r2=983978&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.h (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.h Tue Aug 10 13:05:25 2010
@@ -301,18 +301,6 @@ svn_wc__wq_add_postcommit(svn_wc__db_t *
svn_boolean_t no_unlock,
apr_pool_t *scratch_pool);
-
-/* See props.h */
-#ifdef SVN__SUPPORT_BASE_MERGE
-svn_error_t *
-svn_wc__wq_add_install_properties(svn_wc__db_t *db,
- const char *local_abspath,
- apr_hash_t *pristine_props,
- apr_hash_t *actual_props,
- apr_pool_t *scratch_pool);
-#endif
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */