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/05/28 17:26:30 UTC
svn commit: r1682260 - in /subversion/branches/move-tracking-2/subversion:
libsvn_delta/editor3e.c svnmover/svnmover.c tests/cmdline/svnmover_tests.py
Author: julianfoad
Date: Thu May 28 15:26:30 2015
New Revision: 1682260
URL: http://svn.apache.org/r1682260
Log:
On the 'move-tracking-2' branch: Fix editing a branch-root node's
payload (props, text). This was aborting.
* subversion/libsvn_delta/editor3e.c
(svn_editor3_instantiate,
svn_editor3_alter): Expect parent-EID and name to be null values when
editing the root element.
* subversion/svnmover/svnmover.c
(execute): Pass parent-EID and name as null values when editing the root
element.
* subversion/tests/cmdline/svnmover_tests.py
(modify_payload_of_branch_root_element): New test.
(test_list): Run it.
Modified:
subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c
subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py
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=1682260&r1=1682259&r2=1682260&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c Thu May 28 15:26:30 2015
@@ -225,8 +225,10 @@ svn_editor3_instantiate(svn_editor3_t *e
const svn_element_payload_t *new_payload)
{
SVN_ERR_ASSERT(VALID_EID(local_eid));
- SVN_ERR_ASSERT(VALID_EID(new_parent_eid));
- SVN_ERR_ASSERT(VALID_NAME(new_name));
+ SVN_ERR_ASSERT(local_eid == branch->root_eid ? new_parent_eid == -1
+ : VALID_EID(new_parent_eid));
+ SVN_ERR_ASSERT(local_eid == branch->root_eid ? *new_name == '\0'
+ : VALID_NAME(new_name));
SVN_ERR_ASSERT(!new_payload || VALID_PAYLOAD(new_payload));
VERIFY(instantiate, new_parent_eid != local_eid);
/* TODO: verify this element does not exist (in initial state) */
@@ -306,8 +308,10 @@ svn_editor3_alter(svn_editor3_t *editor,
const svn_element_payload_t *new_payload)
{
SVN_ERR_ASSERT(VALID_EID(eid));
- SVN_ERR_ASSERT(VALID_EID(new_parent_eid));
- SVN_ERR_ASSERT(VALID_NAME(new_name));
+ SVN_ERR_ASSERT(eid == branch->root_eid ? new_parent_eid == -1
+ : VALID_EID(new_parent_eid));
+ SVN_ERR_ASSERT(eid == branch->root_eid ? *new_name == '\0'
+ : VALID_NAME(new_name));
SVN_ERR_ASSERT(! new_payload || VALID_PAYLOAD(new_payload));
VERIFY(alter, new_parent_eid != eid);
/* TODO: verify this element exists (in initial state) */
Modified: subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c?rev=1682260&r1=1682259&r2=1682260&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Thu May 28 15:26:30 2015
@@ -2048,6 +2048,8 @@ execute(const apr_array_header_t *action
{
apr_hash_t *props = apr_hash_make(iterpool);
svn_stringbuf_t *text;
+ int parent_eid;
+ const char *name;
svn_element_payload_t *payload;
if (arg[1]->el_rev->eid >= 0)
@@ -2073,11 +2075,23 @@ execute(const apr_array_header_t *action
}
payload = svn_element_payload_create_file(props, text, iterpool);
+ if (is_branch_root_element(arg[1]->el_rev->branch,
+ arg[1]->el_rev->eid))
+ {
+ parent_eid = -1;
+ name = "";
+ }
+ else
+ {
+ parent_eid = arg[1]->parent_el_rev->eid;
+ name = arg[1]->path_name;
+ }
+
if (arg[1]->el_rev->eid >= 0)
{
SVN_ERR(svn_editor3_alter(editor,
arg[1]->el_rev->branch, arg[1]->el_rev->eid,
- arg[1]->parent_el_rev->eid, arg[1]->path_name,
+ parent_eid, name,
payload));
}
else
@@ -2086,7 +2100,7 @@ execute(const apr_array_header_t *action
SVN_ERR(svn_editor3_add(editor, &new_eid, svn_node_file,
arg[1]->parent_el_rev->branch,
- arg[1]->parent_el_rev->eid, arg[1]->path_name,
+ parent_eid, name,
payload));
}
}
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py?rev=1682260&r1=1682259&r2=1682260&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py Thu May 28 15:26:30 2015
@@ -1228,6 +1228,18 @@ def merge_from_subbranch_to_subtree(sbox
reported_add('A/B1/C1/D'),
'merge A/B1/C2 A/B1/C1 A/B1/C1@2')
+def modify_payload_of_branch_root_element(sbox):
+ "modify payload of branch root element"
+ sbox_build_svnmover(sbox)
+
+ # Make a file, and branch it
+ test_svnmover2(sbox, '', None,
+ 'put ' + mk_file(sbox, 'f1') + ' f1 ' +
+ 'branch f1 f2')
+
+ # Modify the file-branch
+ test_svnmover2(sbox, '', None,
+ 'put ' + mk_file(sbox, 'f2') + ' f2')
######################################################################
@@ -1248,6 +1260,7 @@ test_list = [ None,
merge_added_subbranch,
branch_to_subbranch_of_self,
merge_from_subbranch_to_subtree,
+ modify_payload_of_branch_root_element,
]
if __name__ == '__main__':