Author: julianfoad
Date: Mon Nov 24 15:58:50 2014
New Revision: 1641412

URL: http://svn.apache.org/r1641412
Log:
On the 'move-tracking-2' branch: Add 'svnmover mkbranch' subcommand.

* subversion/svnmover/svnmover.c
  (ACTION_MKBRANCH): New constant.
  (execute): Implement it.
  (usage): Document it.
  (sub_main): Parse it.

* subversion/tests/cmdline/svnmover_tests.py
  (merges): Use it.

Modified:
    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/svnmover/svnmover.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c?rev=1641412&r1=1641411&r2=1641412&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Mon Nov 
24 15:58:50 2014
@@ -196,6 +196,7 @@ typedef enum action_code_t {
   ACTION_LIST_BRANCHES,
   ACTION_LIST_BRANCHES_R,
   ACTION_BRANCH,
+  ACTION_MKBRANCH,
   ACTION_BRANCHIFY,
   ACTION_DISSOLVE,
   ACTION_MERGE,
@@ -1265,6 +1266,26 @@ execute(const apr_array_header_t *action
                                     iterpool));
           made_changes = TRUE;
           break;
+        case ACTION_MKBRANCH:
+          VERIFY_REV_UNSPECIFIED("mkbranch", 0);
+          VERIFY_EID_NONEXISTENT("mkbranch", 0);
+          VERIFY_PARENT_EID_EXISTS("mkbranch", 0);
+          {
+            apr_hash_t *props = apr_hash_make(iterpool);
+            svn_editor3_node_content_t *content
+              = svn_editor3_node_content_create_dir(props, iterpool);
+            int new_eid;
+
+            SVN_ERR(svn_editor3_add(editor, &new_eid, svn_node_dir,
+                                    parent_el_rev[0]->branch,
+                                    parent_el_rev[0]->eid, path_name[0],
+                                    content));
+            SVN_ERR(svn_branch_branchify(editor,
+                                         parent_el_rev[0]->branch, new_eid,
+                                         iterpool));
+          }
+          made_changes = TRUE;
+          break;
         case ACTION_BRANCHIFY:
           VERIFY_REV_UNSPECIFIED("branchify", 0);
           VERIFY_EID_EXISTS("branchify", 0);
@@ -1442,6 +1463,8 @@ usage(FILE *stream, apr_pool_t *pool)
       "  ls-br-r                : list all branches, recursively\n"
       "  branch SRC DST         : branch the branch-root or branch-subtree at 
SRC\n"
       "                           to make a new branch at DST\n"
+      "  mkbranch ROOT          : make a directory that's the root of a new 
branch\n"
+      "                           in a new branching family; like 
mkdir+branchify\n"
       "  branchify ROOT         : change the existing simple subtree at ROOT 
into\n"
       "                           a sub-branch (presently, in a new branch 
family)\n"
       "  dissolve ROOT          : change the existing sub-branch at ROOT into 
a\n"
@@ -1880,6 +1903,8 @@ sub_main(int *exit_code, int argc, const
         action->action = ACTION_LIST_BRANCHES_R;
       else if (! strcmp(action_string, "branch"))
         action->action = ACTION_BRANCH;
+      else if (! strcmp(action_string, "mkbranch"))
+        action->action = ACTION_MKBRANCH;
       else if (! strcmp(action_string, "branchify"))
         action->action = ACTION_BRANCHIFY;
       else if (! strcmp(action_string, "dissolve"))
@@ -1917,6 +1942,7 @@ sub_main(int *exit_code, int argc, const
       /* How many URLs does this action expect? */
       if (action->action == ACTION_RM
           || action->action == ACTION_MKDIR
+          || action->action == ACTION_MKBRANCH
           || action->action == ACTION_BRANCHIFY
           || action->action == ACTION_DISSOLVE)
         num_url_args = 1;

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=1641412&r1=1641411&r2=1641412&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 
Mon Nov 24 15:58:50 2014
@@ -358,8 +358,7 @@ def merges(sbox):
   # (r2)
   svntest.actions.run_and_verify_svnmover(None, None, [],
                            '-U', repo_url,
-                           'mkdir', 'trunk',
-                           'branchify', 'trunk',
+                           'mkbranch', 'trunk',
                            'mkdir', 'branches')
 
   # Create some nodes in trunk, each one named for how we will modify it.


Reply via email to