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/12/14 18:15:42 UTC
svn commit: r1719961 - in /subversion/trunk: subversion/include/private/
subversion/libsvn_delta/ tools/dev/svnmover/
Author: julianfoad
Date: Mon Dec 14 17:15:42 2015
New Revision: 1719961
URL: http://svn.apache.org/viewvc?rev=1719961&view=rev
Log:
In 'svnmover', consolidate some branching methods. Basically, delete the
two 'add branch' methods because 'open branch' can do the same job.
* subversion/include/private/svn_branch.h
(svn_branch__txn_get_branches): Add comments.
(svn_branch__txn_open_branch): Add comments. Rename a parameter.
(svn_branch__state_t): Add comments.
(svn_branch__txn_add_branch,
svn_branch__txn_add_new_branch): Delete.
* subversion/include/private/svn_branch_impl.h
(svn_branch__txn_v_add_branch_t,
svn_branch__txn_v_add_new_branch_t): Delete.
(svn_branch__txn_vtable_t): Delete those entries from the vtable.
* subversion/libsvn_delta/branch.c
(branch_txn_add_branch,
branch_txn_add_new_branch): Delete.
(branch_txn_open_branch,
branch_txn_branch): Don't use svn_branch__txn_add_new_branch().
(svn_branch__txn_add_branch,
svn_branch__txn_add_new_branch): Delete.
(svn_branch__txn_open_branch): Rename a parameter.
(branch_txn_create): Update the vtable.
(svn_branch__txn_parse): Don't use svn_branch__txn_add_branch().
* subversion/libsvn_delta/branch_compat.c
(compat_branch_txn_add_branch,
compat_branch_txn_add_new_branch): Delete.
(svn_branch__compat_txn_from_delta_for_commit): Update the vtable.
* subversion/libsvn_delta/branch_nested.c
(svn_branch__instantiate_elements_r): Use svn_branch__txn_open_branch()
instead of ...add_new_branch.
(nested_branch_txn_add_branch,
nested_branch_txn_add_new_branch): Delete.
(svn_branch__nested_txn_create): Update the vtable.
* tools/dev/svnmover/svnmover.c
(do_mkbranch): Add a comment.
Modified:
subversion/trunk/subversion/include/private/svn_branch.h
subversion/trunk/subversion/include/private/svn_branch_impl.h
subversion/trunk/subversion/libsvn_delta/branch.c
subversion/trunk/subversion/libsvn_delta/branch_compat.c
subversion/trunk/subversion/libsvn_delta/branch_nested.c
subversion/trunk/tools/dev/svnmover/svnmover.c
Modified: subversion/trunk/subversion/include/private/svn_branch.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_branch.h?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_branch.h (original)
+++ subversion/trunk/subversion/include/private/svn_branch.h Mon Dec 14 17:15:42 2015
@@ -166,6 +166,11 @@ svn_branch__txn_create(const svn_branch_
/* Return all the branches in TXN.
*
+ * These branches are available for reading. (Some of them may also be
+ * mutable.)
+ *
+ * ### Rename to 'list_branches' & return only their ids?
+ *
* Return an empty array if there are none.
*/
apr_array_header_t *
@@ -199,11 +204,16 @@ svn_branch__txn_new_eid(svn_branch__txn_
int *new_eid_p,
apr_pool_t *scratch_pool);
-/** Create a new branch or access an existing branch.
+/** Open for writing, either a new branch or an existing branch.
*
- * When creating a branch, declare its root element id to be ROOT_EID. Do
+ * When creating a new branch, declare its root element id to be ROOT_EID. Do
* not instantiate the root element, nor any other elements.
*
+ * ### TODO: Change this: Allow specifying the initial tree state, by
+ * reference to a committed tree. (Default / typically: the main
+ * parent in 'history' param.) 'empty' is a common and valid option.
+ * ### TODO: Take a 'history' parameter; 'none' is a valid option.
+ *
* We use a common 'open subbranch' method for both 'find' and 'add'
* cases, according to the principle that 'editing' a txn should dictate
* the new state without reference to the old state.
@@ -211,15 +221,13 @@ svn_branch__txn_new_eid(svn_branch__txn_
* This method returns a mutable 'branch state' object which is a part of
* the txn.
*
- * When adding a new branch, ROOT_EID is used.
- *
* ### When opening ('finding') an existing branch, ROOT_EID should match
* it. (Should we check, and throw an error if not?)
*/
svn_error_t *
svn_branch__txn_open_branch(svn_branch__txn_t *txn,
svn_branch__state_t **new_branch_p,
- const char *new_branch_id,
+ const char *branch_id,
int root_eid,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
@@ -323,6 +331,8 @@ struct svn_branch__state_t
const char *bid;
/* The revision to which this branch state belongs */
+ /* ### Later we should remove this and let a single state be sharable
+ by multiple txns. */
svn_branch__txn_t *txn;
};
@@ -385,26 +395,6 @@ svn_branch__id_unnest(const char **outer
const char *bid,
apr_pool_t *result_pool);
-/* Register the existence of BRANCH in TXN.
- */
-svn_error_t *
-svn_branch__txn_add_branch(svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool);
-
-/* Create a new branch with branch id BID, with no elements
- * (not even a root element).
- *
- * Create and return a new branch object. Register its existence in TXN.
- *
- * Set the root element to ROOT_EID.
- */
-svn_branch__state_t *
-svn_branch__txn_add_new_branch(svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool);
-
/* Remove the branch with id BID from the list of branches in TXN.
*/
svn_error_t *
Modified: subversion/trunk/subversion/include/private/svn_branch_impl.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_branch_impl.h?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_branch_impl.h (original)
+++ subversion/trunk/subversion/include/private/svn_branch_impl.h Mon Dec 14 17:15:42 2015
@@ -59,17 +59,6 @@ typedef apr_array_header_t *(*svn_branch
const svn_branch__txn_t *txn,
apr_pool_t *result_pool);
-typedef svn_error_t *(*svn_branch__txn_v_add_branch_t)(
- svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool);
-
-typedef svn_branch__state_t *(*svn_branch__txn_v_add_new_branch_t)(
- svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool);
-
typedef svn_error_t *(*svn_branch__txn_v_delete_branch_t)(
svn_branch__txn_t *txn,
const char *bid,
@@ -128,8 +117,6 @@ struct svn_branch__txn_vtable_t
/* Methods. */
svn_branch__txn_v_get_branches_t get_branches;
- svn_branch__txn_v_add_branch_t add_branch;
- svn_branch__txn_v_add_new_branch_t add_new_branch;
svn_branch__txn_v_delete_branch_t delete_branch;
svn_branch__txn_v_get_num_new_eids_t get_num_new_eids;
svn_branch__txn_v_new_eid_t new_eid;
Modified: subversion/trunk/subversion/libsvn_delta/branch.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/branch.c?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_delta/branch.c (original)
+++ subversion/trunk/subversion/libsvn_delta/branch.c Mon Dec 14 17:15:42 2015
@@ -145,36 +145,6 @@ branch_txn_get_branches(const svn_branch
/* An #svn_branch__txn_t method. */
static svn_error_t *
-branch_txn_add_branch(svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool)
-{
- APR_ARRAY_PUSH(txn->priv->branches, void *) = branch;
-
- return SVN_NO_ERROR;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_branch__state_t *
-branch_txn_add_new_branch(svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool)
-{
- svn_branch__state_t *new_branch;
-
- SVN_ERR_ASSERT_NO_RETURN(root_eid != -1);
-
- new_branch = branch_state_create(bid, root_eid, txn,
- txn->priv->branches->pool);
-
- APR_ARRAY_PUSH(txn->priv->branches, void *) = new_branch;
-
- return new_branch;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_error_t *
branch_txn_delete_branch(svn_branch__txn_t *txn,
const char *bid,
apr_pool_t *scratch_pool)
@@ -223,25 +193,27 @@ branch_txn_new_eid(svn_branch__txn_t *tx
static svn_error_t *
branch_txn_open_branch(svn_branch__txn_t *txn,
svn_branch__state_t **new_branch_p,
- const char *new_branch_id,
+ const char *branch_id,
int root_eid,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
svn_branch__state_t *new_branch;
- /* if the subbranch already exists, just return it */
+ /* if the branch already exists, just return it, else create it */
new_branch
- = svn_branch__txn_get_branch_by_id(txn, new_branch_id, scratch_pool);
+ = svn_branch__txn_get_branch_by_id(txn, branch_id, scratch_pool);
if (new_branch)
{
SVN_ERR_ASSERT(root_eid == svn_branch__root_eid(new_branch));
}
else
{
- new_branch = svn_branch__txn_add_new_branch(txn,
- new_branch_id,
- root_eid, scratch_pool);
+ SVN_ERR_ASSERT_NO_RETURN(root_eid != -1);
+
+ new_branch = branch_state_create(branch_id, root_eid, txn,
+ txn->priv->branches->pool);
+ APR_ARRAY_PUSH(txn->priv->branches, void *) = new_branch;
}
if (new_branch_p)
@@ -288,9 +260,8 @@ branch_txn_branch(svn_branch__txn_t *txn
from->rev, from->bid, from->eid);
}
- new_branch = svn_branch__txn_add_new_branch(txn,
- new_branch_id,
- from->eid, scratch_pool);
+ SVN_ERR(branch_txn_open_branch(txn, &new_branch, new_branch_id,
+ from->eid, scratch_pool, scratch_pool));
/* Populate the mapping from the 'from' source */
SVN_ERR(branch_instantiate_elements(new_branch, from_subtree,
@@ -354,32 +325,6 @@ svn_branch__txn_get_branches(const svn_b
}
svn_error_t *
-svn_branch__txn_add_branch(svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(txn->vtable->add_branch(txn,
- branch,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-svn_branch__state_t *
-svn_branch__txn_add_new_branch(svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool)
-{
- svn_branch__state_t *new_branch
- = txn->vtable->add_new_branch(txn,
- bid, root_eid,
- scratch_pool);
-
- return new_branch;
-}
-
-svn_error_t *
svn_branch__txn_delete_branch(svn_branch__txn_t *txn,
const char *bid,
apr_pool_t *scratch_pool)
@@ -415,14 +360,14 @@ svn_branch__txn_new_eid(svn_branch__txn_
svn_error_t *
svn_branch__txn_open_branch(svn_branch__txn_t *txn,
svn_branch__state_t **new_branch_p,
- const char *new_branch_id,
+ const char *branch_id,
int root_eid,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
SVN_ERR(txn->vtable->open_branch(txn,
new_branch_p,
- new_branch_id,
+ branch_id,
root_eid, result_pool,
scratch_pool));
return SVN_NO_ERROR;
@@ -680,8 +625,6 @@ branch_txn_create(svn_branch__repos_t *r
static const svn_branch__txn_vtable_t vtable = {
{0},
branch_txn_get_branches,
- branch_txn_add_branch,
- branch_txn_add_new_branch,
branch_txn_delete_branch,
branch_txn_get_num_new_eids,
branch_txn_new_eid,
@@ -1701,7 +1644,7 @@ svn_branch__txn_parse(svn_branch__txn_t
SVN_ERR(svn_branch__state_parse(&branch, txn, stream,
result_pool, scratch_pool));
- SVN_ERR(svn_branch__txn_add_branch(txn, branch, scratch_pool));
+ APR_ARRAY_PUSH(txn->priv->branches, void *) = branch;
}
*txn_p = txn;
Modified: subversion/trunk/subversion/libsvn_delta/branch_compat.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/branch_compat.c?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_delta/branch_compat.c (original)
+++ subversion/trunk/subversion/libsvn_delta/branch_compat.c Mon Dec 14 17:15:42 2015
@@ -1763,35 +1763,6 @@ compat_branch_txn_get_branches(const svn
/* An #svn_branch__txn_t method. */
static svn_error_t *
-compat_branch_txn_add_branch(svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool)
-{
- /* Just forwarding: nothing more is needed. */
- SVN_ERR(svn_branch__txn_add_branch(txn->priv->txn,
- branch,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_branch__state_t *
-compat_branch_txn_add_new_branch(svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool)
-{
- /* Just forwarding: nothing more is needed. */
- svn_branch__state_t *new_branch
- = svn_branch__txn_add_new_branch(txn->priv->txn,
- bid, root_eid,
- scratch_pool);
-
- return new_branch;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_error_t *
compat_branch_txn_delete_branch(svn_branch__txn_t *txn,
const char *bid,
apr_pool_t *scratch_pool)
@@ -2012,8 +1983,6 @@ svn_branch__compat_txn_from_delta_for_co
static const svn_branch__txn_vtable_t vtable = {
{0},
compat_branch_txn_get_branches,
- compat_branch_txn_add_branch,
- compat_branch_txn_add_new_branch,
compat_branch_txn_delete_branch,
compat_branch_txn_get_num_new_eids,
compat_branch_txn_new_eid,
Modified: subversion/trunk/subversion/libsvn_delta/branch_nested.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/branch_nested.c?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_delta/branch_nested.c (original)
+++ subversion/trunk/subversion/libsvn_delta/branch_nested.c Mon Dec 14 17:15:42 2015
@@ -295,14 +295,18 @@ svn_branch__instantiate_elements_r(svn_b
svn_branch__subtree_t *this_subtree = apr_hash_this_val(hi);
const char *new_branch_id;
svn_branch__state_t *new_branch;
+ /*### svn_branch__history_t *history;*/
/* branch this subbranch into NEW_BRANCH (recursing) */
new_branch_id = svn_branch__id_nest(to_branch->bid, this_outer_eid,
scratch_pool);
- new_branch = svn_branch__txn_add_new_branch(to_branch->txn,
- new_branch_id,
- this_subtree->tree->root_eid,
- scratch_pool);
+ SVN_ERR(svn_branch__txn_open_branch(to_branch->txn, &new_branch,
+ new_branch_id,
+ /*### reference_tree={empty},*/
+ this_subtree->tree->root_eid,
+ scratch_pool, scratch_pool));
+ /*### SVN_ERR(svn_branch__state_set_history(new_branch, history,
+ scratch_pool));*/
SVN_ERR(svn_branch__instantiate_elements_r(new_branch, *this_subtree,
scratch_pool));
@@ -462,35 +466,6 @@ nested_branch_txn_get_branches(const svn
/* An #svn_branch__txn_t method. */
static svn_error_t *
-nested_branch_txn_add_branch(svn_branch__txn_t *txn,
- svn_branch__state_t *branch,
- apr_pool_t *scratch_pool)
-{
- /* Just forwarding: nothing more is needed. */
- SVN_ERR(svn_branch__txn_add_branch(txn->priv->wrapped_txn,
- branch,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_branch__state_t *
-nested_branch_txn_add_new_branch(svn_branch__txn_t *txn,
- const char *bid,
- int root_eid,
- apr_pool_t *scratch_pool)
-{
- /* Just forwarding: nothing more is needed. */
- svn_branch__state_t *new_branch
- = svn_branch__txn_add_new_branch(txn->priv->wrapped_txn,
- bid, root_eid,
- scratch_pool);
-
- return new_branch;
-}
-
-/* An #svn_branch__txn_t method. */
-static svn_error_t *
nested_branch_txn_delete_branch(svn_branch__txn_t *txn,
const char *bid,
apr_pool_t *scratch_pool)
@@ -676,8 +651,6 @@ svn_branch__nested_txn_create(svn_branch
static const svn_branch__txn_vtable_t vtable = {
{0},
nested_branch_txn_get_branches,
- nested_branch_txn_add_branch,
- nested_branch_txn_add_new_branch,
nested_branch_txn_delete_branch,
nested_branch_txn_get_num_new_eids,
nested_branch_txn_new_eid,
Modified: subversion/trunk/tools/dev/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dev/svnmover/svnmover.c?rev=1719961&r1=1719960&r2=1719961&view=diff
==============================================================================
--- subversion/trunk/tools/dev/svnmover/svnmover.c (original)
+++ subversion/trunk/tools/dev/svnmover/svnmover.c Mon Dec 14 17:15:42 2015
@@ -2634,6 +2634,7 @@ do_mkbranch(const char **new_branch_id_p
scratch_pool);
SVN_ERR(svn_branch__txn_open_branch(txn, &new_branch,
new_branch_id, new_inner_eid,
+ /*### reference_tree={empty},*/
scratch_pool, scratch_pool));
SVN_ERR(svn_branch__state_alter_one(new_branch, new_inner_eid,
-1, "", payload, scratch_pool));