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/06 17:28:28 UTC

svn commit: r1678027 - /subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c

Author: julianfoad
Date: Wed May  6 15:28:27 2015
New Revision: 1678027

URL: http://svn.apache.org/r1678027
Log:
On the 'move-tracking-2' branch: Tweak code structure: put 'svnmover'
subcommand arguments in a structure instead of in several separate variables.

* subversion/svnmover/svnmover.c
  (arg_t): New.
  (VERIFY_*,
   execute): Use arg_t instead of separate variables.

Modified:
    subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c

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=1678027&r1=1678026&r2=1678027&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Wed May  6 15:28:27 2015
@@ -1706,32 +1706,39 @@ commit_callback(const svn_commit_info_t
   return SVN_NO_ERROR;
 }
 
+typedef struct arg_t
+{
+  const char *path_name;
+  svn_revnum_t revnum;
+  svn_branch_el_rev_id_t *el_rev, *parent_el_rev;
+} arg_t;
+
 #define VERIFY_REV_SPECIFIED(op, i)                                     \
-  if (el_rev[i]->rev == SVN_INVALID_REVNUM)                             \
+  if (arg[i]->el_rev->rev == SVN_INVALID_REVNUM)                        \
     return svn_error_createf(SVN_ERR_BRANCHING, NULL,                   \
                              _("%s: '%s': revision number required"),   \
                              op, action->relpath[i]);
 
 #define VERIFY_REV_UNSPECIFIED(op, i)                                   \
-  if (el_rev[i]->rev != SVN_INVALID_REVNUM)                             \
+  if (arg[i]->el_rev->rev != SVN_INVALID_REVNUM)                        \
     return svn_error_createf(SVN_ERR_BRANCHING, NULL,                   \
                              _("%s: '%s@...': revision number not allowed"), \
                              op, action->relpath[i]);
 
 #define VERIFY_EID_NONEXISTENT(op, i)                                   \
-  if (el_rev[i]->eid != -1)                                             \
+  if (arg[i]->el_rev->eid != -1)                                        \
     return svn_error_createf(SVN_ERR_BRANCHING, NULL,                   \
                              _("%s: Path '%s' already exists"),         \
                              op, action->relpath[i]);
 
 #define VERIFY_EID_EXISTS(op, i)                                        \
-  if (el_rev[i]->eid == -1)                                             \
+  if (arg[i]->el_rev->eid == -1)                                        \
     return svn_error_createf(SVN_ERR_BRANCHING, NULL,                   \
                              _("%s: Path '%s' not found"),              \
                              op, action->relpath[i]);
 
 #define VERIFY_PARENT_EID_EXISTS(op, i)                                 \
-  if (parent_el_rev[i]->eid == -1)                                      \
+  if (arg[i]->parent_el_rev->eid == -1)                                 \
     return svn_error_createf(SVN_ERR_BRANCHING, NULL,                   \
                              _("%s: Path '%s' not found"),              \
                              op, svn_relpath_dirname(action->relpath[i], pool));
@@ -1793,9 +1800,7 @@ execute(const apr_array_header_t *action
     {
       action_t *action = APR_ARRAY_IDX(actions, i, action_t *);
       int j;
-      svn_revnum_t revnum[3] = { -1, -1, -1 };
-      const char *path_name[3] = { NULL, NULL, NULL };
-      svn_branch_el_rev_id_t *el_rev[3], *parent_el_rev[3];
+      arg_t *arg[3] = { NULL, NULL, NULL };
 
       svn_pool_clear(iterpool);
 
@@ -1812,13 +1817,14 @@ execute(const apr_array_header_t *action
             {
               const char *rrpath, *parent_rrpath;
 
+              arg[j] = apr_palloc(iterpool, sizeof(*arg[j]));
               if (action->rev_spec[j].kind == svn_opt_revision_unspecified)
-                revnum[j] = SVN_INVALID_REVNUM;
+                arg[j]->revnum = SVN_INVALID_REVNUM;
               else if (action->rev_spec[j].kind == svn_opt_revision_number)
-                revnum[j] = action->rev_spec[j].value.number;
+                arg[j]->revnum = action->rev_spec[j].value.number;
               else if (action->rev_spec[j].kind == svn_opt_revision_head)
                 {
-                  revnum[j] = mtcc->head_revision;
+                  arg[j]->revnum = mtcc->head_revision;
                 }
               else
                 return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
@@ -1829,12 +1835,12 @@ execute(const apr_array_header_t *action
               rrpath = svn_relpath_join(base_relpath, action->relpath[j], pool);
               parent_rrpath = svn_relpath_dirname(rrpath, pool);
 
-              path_name[j] = svn_relpath_basename(rrpath, NULL);
-              SVN_ERR(find_el_rev_by_rrpath_rev(&el_rev[j], editor,
-                                                revnum[j], rrpath,
+              arg[j]->path_name = svn_relpath_basename(rrpath, NULL);
+              SVN_ERR(find_el_rev_by_rrpath_rev(&arg[j]->el_rev, editor,
+                                                arg[j]->revnum, rrpath,
                                                 pool, pool));
-              SVN_ERR(find_el_rev_by_rrpath_rev(&parent_el_rev[j], editor,
-                                                revnum[j], parent_rrpath,
+              SVN_ERR(find_el_rev_by_rrpath_rev(&arg[j]->parent_el_rev, editor,
+                                                arg[j]->revnum, parent_rrpath,
                                                 pool, pool));
             }
         }
@@ -1845,8 +1851,8 @@ execute(const apr_array_header_t *action
           VERIFY_EID_EXISTS("diff", 1);
           {
             SVN_ERR(svn_branch_diff_r(editor,
-                                      el_rev[0] /*from*/,
-                                      el_rev[1] /*to*/,
+                                      arg[0]->el_rev /*from*/,
+                                      arg[1]->el_rev /*to*/,
                                       flat_branch_diff, "",
                                       iterpool));
           }
@@ -1856,8 +1862,8 @@ execute(const apr_array_header_t *action
           VERIFY_EID_EXISTS("log", 1);
           {
             SVN_ERR(svn_branch_log(editor,
-                                   el_rev[0] /*from*/,
-                                   el_rev[1] /*to*/,
+                                   arg[0]->el_rev /*from*/,
+                                   arg[1]->el_rev /*to*/,
                                    iterpool));
           }
           break;
@@ -1871,11 +1877,11 @@ execute(const apr_array_header_t *action
               }
             else
               {
-                printf("branches rooted at e%d:\n", el_rev[0]->eid);
+                printf("branches rooted at e%d:\n", arg[0]->el_rev->eid);
               }
             SVN_ERR(list_branches(
                       editor, base_revision,
-                      el_rev[0]->eid,
+                      arg[0]->el_rev->eid,
                       FALSE, iterpool));
           }
           break;
@@ -1892,11 +1898,11 @@ execute(const apr_array_header_t *action
               {
                 flat_branch_t *fb
                   = branch_get_flat_branch(
-                      el_rev[0]->branch, el_rev[0]->branch->root_eid, iterpool);
+                      arg[0]->el_rev->branch, arg[0]->el_rev->branch->root_eid, iterpool);
                 SVN_ERR(list_branch_elements(fb, iterpool));
               }
             else
-              SVN_ERR(list_branch_elements_by_eid(el_rev[0]->branch, iterpool));
+              SVN_ERR(list_branch_elements_by_eid(arg[0]->el_rev->branch, iterpool));
           }
           break;
         case ACTION_BRANCH:
@@ -1908,9 +1914,9 @@ execute(const apr_array_header_t *action
             svn_branch_state_t *new_branch;
 
             SVN_ERR(svn_branch_branch(&new_branch,
-                                      el_rev[0]->branch, el_rev[0]->eid,
-                                      el_rev[1]->branch, parent_el_rev[1]->eid,
-                                      path_name[1],
+                                      arg[0]->el_rev->branch, arg[0]->el_rev->eid,
+                                      arg[1]->el_rev->branch, arg[1]->parent_el_rev->eid,
+                                      arg[1]->path_name,
                                       iterpool));
             notify("A+   %s%s", action->relpath[1],
                    branch_str(new_branch, iterpool));
@@ -1923,9 +1929,9 @@ execute(const apr_array_header_t *action
           VERIFY_EID_NONEXISTENT("branch-into", 1);
           VERIFY_PARENT_EID_EXISTS("branch-into", 1);
           {
-            SVN_ERR(svn_branch_branch_into(el_rev[0]->branch, el_rev[0]->eid,
-                                           el_rev[1]->branch,
-                                           parent_el_rev[1]->eid, path_name[1],
+            SVN_ERR(svn_branch_branch_into(arg[0]->el_rev->branch, arg[0]->el_rev->eid,
+                                           arg[1]->el_rev->branch,
+                                           arg[1]->parent_el_rev->eid, arg[1]->path_name,
                                            iterpool));
             notify("A+   %s (subtree)", action->relpath[1]);
           }
@@ -1942,8 +1948,8 @@ execute(const apr_array_header_t *action
             svn_branch_state_t *new_branch;
 
             SVN_ERR(mk_branch(&new_branch,
-                              editor, parent_el_rev[0]->branch,
-                              parent_el_rev[0]->eid, path_name[0],
+                              editor, arg[0]->parent_el_rev->branch,
+                              arg[0]->parent_el_rev->eid, arg[0]->path_name,
                               payload, iterpool));
             notify("A    %s%s", action->relpath[0],
                    branch_str(new_branch, iterpool));
@@ -1956,9 +1962,9 @@ execute(const apr_array_header_t *action
             VERIFY_EID_EXISTS("merge", 1);
             VERIFY_EID_EXISTS("merge", 2);
             SVN_ERR(svn_branch_merge(editor,
-                                     el_rev[0] /*from*/,
-                                     el_rev[1] /*to*/,
-                                     el_rev[2] /*yca*/,
+                                     arg[0]->el_rev /*from*/,
+                                     arg[1]->el_rev /*to*/,
+                                     arg[2]->el_rev /*yca*/,
                                      iterpool));
           }
           made_changes = TRUE;
@@ -1966,8 +1972,8 @@ execute(const apr_array_header_t *action
         case ACTION_MV:
           /* If given a branch root element, look instead at the
              subbranch-root element within the outer branch. */
-          el_rev[0] = point_to_outer_element_instead(el_rev[0], pool);
-          if (! el_rev[0])
+          arg[0]->el_rev = point_to_outer_element_instead(arg[0]->el_rev, pool);
+          if (! arg[0]->el_rev)
             return svn_error_createf(SVN_ERR_BRANCHING, NULL,
                                      _("mv: cannot move the repository root"));
 
@@ -1979,7 +1985,7 @@ execute(const apr_array_header_t *action
           VERIFY_REV_UNSPECIFIED("mv", 1);
           VERIFY_EID_NONEXISTENT("mv", 1);
           VERIFY_PARENT_EID_EXISTS("mv", 1);
-          SVN_ERR(do_move(editor, el_rev[0], parent_el_rev[1], path_name[1],
+          SVN_ERR(do_move(editor, arg[0]->el_rev, arg[1]->parent_el_rev, arg[1]->path_name,
                           pool));
           notify("V    %s (from %s)", action->relpath[1], action->relpath[0]);
           made_changes = TRUE;
@@ -1992,24 +1998,24 @@ execute(const apr_array_header_t *action
           VERIFY_EID_NONEXISTENT("cp", 1);
           VERIFY_PARENT_EID_EXISTS("cp", 1);
           SVN_ERR(svn_editor3_copy_tree(editor,
-                                        el_rev[0],
-                                        parent_el_rev[1]->branch,
-                                        parent_el_rev[1]->eid, path_name[1]));
+                                        arg[0]->el_rev,
+                                        arg[1]->parent_el_rev->branch,
+                                        arg[1]->parent_el_rev->eid, arg[1]->path_name));
           notify("A+   %s (from %s)", action->relpath[1], action->relpath[0]);
           made_changes = TRUE;
           break;
         case ACTION_RM:
           /* If given a branch root element, look instead at the
              subbranch-root element within the outer branch. */
-          el_rev[0] = point_to_outer_element_instead(el_rev[0], pool);
-          if (! el_rev[0])
+          arg[0]->el_rev = point_to_outer_element_instead(arg[0]->el_rev, pool);
+          if (! arg[0]->el_rev)
             return svn_error_createf(SVN_ERR_BRANCHING, NULL,
                                      _("rm: cannot remove the repository root"));
 
           VERIFY_REV_UNSPECIFIED("rm", 0);
           VERIFY_EID_EXISTS("rm", 0);
-          SVN_ERR(svn_editor3_delete(editor, el_rev[0]->rev,
-                                     el_rev[0]->branch, el_rev[0]->eid));
+          SVN_ERR(svn_editor3_delete(editor, arg[0]->el_rev->rev,
+                                     arg[0]->el_rev->branch, arg[0]->el_rev->eid));
           notify("D    %s", action->relpath[0]);
           made_changes = TRUE;
           break;
@@ -2024,8 +2030,8 @@ execute(const apr_array_header_t *action
             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],
+                                    arg[0]->parent_el_rev->branch,
+                                    arg[0]->parent_el_rev->eid, arg[0]->path_name,
                                     payload));
           }
           notify("A    %s", action->relpath[0]);
@@ -2039,7 +2045,7 @@ execute(const apr_array_header_t *action
             svn_stringbuf_t *text;
             svn_element_payload_t *payload;
 
-            if (el_rev[1]->eid >= 0)
+            if (arg[1]->el_rev->eid >= 0)
               {
                 /* ### get existing props */
                 props = apr_hash_make(iterpool);
@@ -2062,11 +2068,11 @@ execute(const apr_array_header_t *action
             }
             payload = svn_element_payload_create_file(props, text, iterpool);
 
-            if (el_rev[1]->eid >= 0)
+            if (arg[1]->el_rev->eid >= 0)
               {
                 SVN_ERR(svn_editor3_alter(editor, SVN_INVALID_REVNUM,
-                                          el_rev[1]->branch, el_rev[1]->eid,
-                                          parent_el_rev[1]->eid, path_name[1],
+                                          arg[1]->el_rev->branch, arg[1]->el_rev->eid,
+                                          arg[1]->parent_el_rev->eid, arg[1]->path_name,
                                           payload));
               }
             else
@@ -2074,8 +2080,8 @@ execute(const apr_array_header_t *action
                 int new_eid;
 
                 SVN_ERR(svn_editor3_add(editor, &new_eid, svn_node_file,
-                                        parent_el_rev[1]->branch,
-                                        parent_el_rev[1]->eid, path_name[1],
+                                        arg[1]->parent_el_rev->branch,
+                                        arg[1]->parent_el_rev->eid, arg[1]->path_name,
                                         payload));
               }
           }