You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/07/30 13:02:08 UTC
svn commit: r1693408 - in /subversion/branches/move-tracking-2/subversion:
include/private/svn_editor3e.h include/private/svn_element.h
libsvn_delta/editor3e.c libsvn_delta/element.c
Author: julianfoad
Date: Thu Jul 30 11:02:08 2015
New Revision: 1693408
URL: http://svn.apache.org/r1693408
Log:
On the 'move-tracking-2' branch: Change the payload resolver API to populate
the content of the existing payload structure instead of just returning the
content.
* subversion/include/private/svn_editor3e.h
(svn_editor3_payload_resolve,
svn_editor3_cb_payload_resolve_t): Remove the output and pool parameters
and update the doc string.
* subversion/libsvn_delta/editor3e.c
(svn_editor3_payload_resolve,
wrap_payload_resolve,
change_detection_payload_resolve): Remove the output and pool parameters.
(svn_branch_subtree_differences): Simplify calls accordingly.
* subversion/include/private/svn_element.h
(svn_element_payload_t): Add a 'pool' field.
* subversion/libsvn_delta/element.c
(svn_element_payload_create_ref,
svn_element_payload_create_dir,
svn_element_payload_create_file,
svn_element_payload_create_symlink): Initialize the 'pool' field.
Modified:
subversion/branches/move-tracking-2/subversion/include/private/svn_editor3e.h
subversion/branches/move-tracking-2/subversion/include/private/svn_element.h
subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c
subversion/branches/move-tracking-2/subversion/libsvn_delta/element.c
Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_editor3e.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_editor3e.h?rev=1693408&r1=1693407&r2=1693408&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_editor3e.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_editor3e.h Thu Jul 30 11:02:08 2015
@@ -773,15 +773,10 @@ svn_editor3_alter(svn_editor3_t *editor,
* path@rev location in the repository), fetch the full payload.
* That is, leave the 'ref' field as it is and also fill in the
* 'kind', 'props', and other fields as appropriate.
- *
- * In all cases, return a copy of the full payload in @a *payload_p,
- * allocated in @a result_pool.
*/
svn_error_t *
svn_editor3_payload_resolve(svn_editor3_t *editor,
- svn_element_payload_t **payload_p,
- const svn_branch_el_rev_content_t *element,
- apr_pool_t *result_pool);
+ svn_branch_el_rev_content_t *element);
/** Register a sequence point.
*
@@ -920,9 +915,7 @@ typedef svn_error_t *(*svn_editor3_cb_al
*/
typedef svn_error_t *(*svn_editor3_cb_payload_resolve_t)(
void *baton,
- svn_element_payload_t **payload_p,
- const svn_branch_el_rev_content_t *element,
- apr_pool_t *result_pool,
+ svn_branch_el_rev_content_t *element,
apr_pool_t *scratch_pool);
/** @see svn_editor3_sequence_point(), #svn_editor3_t
Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_element.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_element.h?rev=1693408&r1=1693407&r2=1693408&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_element.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_element.h Thu Jul 30 11:02:08 2015
@@ -105,6 +105,11 @@ struct svn_element_payload_t
* The 'null' value is (SVN_INVALID_REVNUM, NULL). */
svn_pathrev_t ref;
+ /* The pool in which the payload's content is allocated. Used when
+ * resolving (populating the props/text/target in) a payload that was
+ * originally defined by reference. */
+ apr_pool_t *pool;
+
/* Properties (for kind != unknown).
* Maps (const char *) name -> (svn_string_t) value.
* An empty hash means no properties. (SHOULD NOT be NULL.)
Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c?rev=1693408&r1=1693407&r2=1693408&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c Thu Jul 30 11:02:08 2015
@@ -317,17 +317,13 @@ svn_editor3_alter(svn_editor3_t *editor,
svn_error_t *
svn_editor3_payload_resolve(svn_editor3_t *editor,
- svn_element_payload_t **payload_p,
- const svn_branch_el_rev_content_t *element,
- apr_pool_t *result_pool)
+ svn_branch_el_rev_content_t *element)
{
SVN_ERR_ASSERT(!element->payload
|| svn_element_payload_invariants(element->payload));
DO_CALLBACK(editor, cb_payload_resolve,
- 3(payload_p,
- element,
- result_pool));
+ 1(element));
SVN_ERR_ASSERT(!element->payload
|| svn_element_payload_invariants(element->payload));
@@ -542,17 +538,13 @@ wrap_alter(void *baton,
static svn_error_t *
wrap_payload_resolve(void *baton,
- svn_element_payload_t **payload_p,
- const svn_branch_el_rev_content_t *element,
- apr_pool_t *result_pool,
+ svn_branch_el_rev_content_t *element,
apr_pool_t *scratch_pool)
{
wrapper_baton_t *eb = baton;
SVN_ERR(svn_editor3_payload_resolve(eb->wrapped_editor,
- payload_p,
- element,
- result_pool));
+ element));
return SVN_NO_ERROR;
}
@@ -745,17 +737,13 @@ change_detection_alter(void *baton,
static svn_error_t *
change_detection_payload_resolve(void *baton,
- svn_element_payload_t **payload_p,
- const svn_branch_el_rev_content_t *element,
- apr_pool_t *result_pool,
+ svn_branch_el_rev_content_t *element,
apr_pool_t *scratch_pool)
{
change_detection_baton_t *eb = baton;
SVN_ERR(svn_editor3_payload_resolve(eb->wrapped_editor,
- payload_p,
- element,
- result_pool));
+ element));
return SVN_NO_ERROR;
}
@@ -854,25 +842,11 @@ svn_branch_subtree_differences(apr_hash_
/* If node payload is given by reference, resolve it to full payload */
if (element_left)
{
- svn_element_payload_t *payload;
-
- SVN_ERR(svn_editor3_payload_resolve(editor, &payload, element_left,
- result_pool));
- element_left
- = svn_branch_el_rev_content_create(element_left->parent_eid,
- element_left->name,
- payload, result_pool);
+ SVN_ERR(svn_editor3_payload_resolve(editor, element_left));
}
if (element_right)
{
- svn_element_payload_t *payload;
-
- SVN_ERR(svn_editor3_payload_resolve(editor, &payload, element_right,
- result_pool));
- element_right
- = svn_branch_el_rev_content_create(element_right->parent_eid,
- element_right->name,
- payload, result_pool);
+ SVN_ERR(svn_editor3_payload_resolve(editor, element_right));
}
if (! svn_branch_el_rev_content_equal(element_left, element_right,
Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/element.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/element.c?rev=1693408&r1=1693407&r2=1693408&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/element.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/element.c Thu Jul 30 11:02:08 2015
@@ -177,6 +177,7 @@ svn_element_payload_create_ref(svn_pathr
svn_element_payload_t *new_payload
= apr_pcalloc(result_pool, sizeof(*new_payload));
+ new_payload->pool = result_pool;
new_payload->kind = svn_node_unknown;
new_payload->ref = svn_pathrev_dup(ref, result_pool);
assert(svn_element_payload_invariants(new_payload));
@@ -190,6 +191,7 @@ svn_element_payload_create_dir(apr_hash_
svn_element_payload_t *new_payload
= apr_pcalloc(result_pool, sizeof(*new_payload));
+ new_payload->pool = result_pool;
new_payload->kind = svn_node_dir;
new_payload->props = props ? svn_prop_hash_dup(props, result_pool) : NULL;
assert(svn_element_payload_invariants(new_payload));
@@ -206,6 +208,7 @@ svn_element_payload_create_file(apr_hash
SVN_ERR_ASSERT_NO_RETURN(text);
+ new_payload->pool = result_pool;
new_payload->kind = svn_node_file;
new_payload->props = props ? svn_prop_hash_dup(props, result_pool) : NULL;
new_payload->text = svn_stringbuf_dup(text, result_pool);
@@ -223,6 +226,7 @@ svn_element_payload_create_symlink(apr_h
SVN_ERR_ASSERT_NO_RETURN(target);
+ new_payload->pool = result_pool;
new_payload->kind = svn_node_symlink;
new_payload->props = props ? svn_prop_hash_dup(props, result_pool) : NULL;
new_payload->target = apr_pstrdup(result_pool, target);