You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/07/28 20:13:32 UTC
svn commit: r1151951 - in /subversion/trunk/subversion:
include/private/svn_wc_private.h libsvn_wc/node.c
Author: stsp
Date: Thu Jul 28 18:13:31 2011
New Revision: 1151951
URL: http://svn.apache.org/viewvc?rev=1151951&view=rev
Log:
Add new libsvn_wc API function svn_wc__node_was_moved_here() which
determines whether a node at a given LOCAL_ABSPATH was moved to this path.
This will be used later, and will also get a companion called
svn_wc__node_was_moved_away() (not implemented yet).
* subversion/include/private/svn_wc_private.h
(svn_wc__node_was_moved_here): Declare.
* subversion/libsvn_wc/node.c
(svn_wc__node_was_moved_here): New.
Modified:
subversion/trunk/subversion/include/private/svn_wc_private.h
subversion/trunk/subversion/libsvn_wc/node.c
Modified: subversion/trunk/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_wc_private.h?rev=1151951&r1=1151950&r2=1151951&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_wc_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_wc_private.h Thu Jul 28 18:13:31 2011
@@ -1111,6 +1111,25 @@ svn_wc__delete_internal(svn_wc_context_t
void *notify_baton,
apr_pool_t *scratch_pool);
+/* If the node at LOCAL_ABSPATH was moved here set *MOVED_FROM_ABSPATH to
+ * the absolute path of the deleted move-source node, and set
+ * *DELETE_OP_ROOT_ABSPATH to the absolute path of the root node of the
+ * delete operation.
+ *
+ * If the node was not moved, set *MOVED_FROM_ABSPATH and
+ * *DELETE_OP_ROOT_ABSPATH to NULL.
+ *
+ * Either MOVED_FROM_ABSPATH or OP_ROOT_ABSPATH may be NULL to indicate
+ * that the caller is not interested in the result.
+ */
+svn_error_t *
+svn_wc__node_was_moved_here(const char **moved_from_abspath,
+ const char **delete_op_root_abspath,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/trunk/subversion/libsvn_wc/node.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/node.c?rev=1151951&r1=1151950&r2=1151951&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/node.c (original)
+++ subversion/trunk/subversion/libsvn_wc/node.c Thu Jul 28 18:13:31 2011
@@ -1766,3 +1766,46 @@ svn_wc__check_for_obstructions(svn_wc_no
return SVN_NO_ERROR;
}
+
+svn_error_t *
+svn_wc__node_was_moved_here(const char **moved_from_abspath,
+ const char **delete_op_root_abspath,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ svn_boolean_t is_added;
+
+ if (moved_from_abspath)
+ *moved_from_abspath = NULL;
+ if (delete_op_root_abspath)
+ *delete_op_root_abspath = NULL;
+
+ SVN_ERR(svn_wc__node_is_added(&is_added, wc_ctx, local_abspath,
+ scratch_pool));
+ if (is_added && (moved_from_abspath || delete_op_root_abspath))
+ {
+ svn_wc__db_status_t status;
+ const char *db_moved_from_abspath;
+ const char *db_delete_op_root_abspath;
+
+ SVN_ERR(svn_wc__db_scan_addition(&status, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, &db_moved_from_abspath,
+ &db_delete_op_root_abspath,
+ wc_ctx->db, local_abspath,
+ scratch_pool, scratch_pool));
+ if (status == svn_wc__db_status_moved_here)
+ {
+ if (moved_from_abspath)
+ *moved_from_abspath = apr_pstrdup(result_pool,
+ db_moved_from_abspath);
+ if (delete_op_root_abspath)
+ *delete_op_root_abspath = apr_pstrdup(result_pool,
+ db_delete_op_root_abspath);
+ }
+ }
+
+ return SVN_NO_ERROR;
+}