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/03/05 17:43:43 UTC

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

Author: julianfoad
Date: Thu Mar  5 16:43:43 2015
New Revision: 1664403

URL: http://svn.apache.org/r1664403
Log:
On the 'move-tracking-2' branch: Add an 'svnmover ls' command to list the
elements in a branch.

* subversion/svnmove/svnmover.c
  (action_code_t,
   action_defn): Add a 'ls' entry.
  (action_t): Remove out-of-date duplicate documentation.
  (list_branch_elements): New, extracted...
  (family_list_branch_instances): ... from here.
  (execute): Implement the 'ls' command by calling list_branch_elements().

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=1664403&r1=1664402&r2=1664403&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Thu Mar  5 16:43:43 2015
@@ -233,6 +233,7 @@ typedef enum action_code_t {
   ACTION_LOG,
   ACTION_LIST_BRANCHES,
   ACTION_LIST_BRANCHES_R,
+  ACTION_LS,
   ACTION_BRANCH,
   ACTION_MKBRANCH,
   ACTION_BRANCHIFY,
@@ -260,6 +261,8 @@ static const action_defn_t action_defn[]
     "list all branches in the same family as that at PATH"},
   {ACTION_LIST_BRANCHES_R,  "ls-br-r", 0, "",
     "list all branches, recursively"},
+  {ACTION_LS,               "ls", 1, "PATH",
+    "list elements in the branch found at PATH"},
   {ACTION_LOG,              "log", 2, "FROM@REV TO@REV",
     "show per-revision diffs between FROM and TO"},
   {ACTION_BRANCH,           "branch", 2, "SRC DST",
@@ -296,24 +299,10 @@ static const action_defn_t action_defn[]
 typedef struct action_t {
   action_code_t action;
 
-  /* revision (copy-from-rev of path[0] for cp) */
+  /* argument revisions */
   svn_opt_revision_t rev_spec[3];
 
-  /* action    path[0]  path[1]  path[2]
-   * ------    -------  -------  -------
-   * diff[-e]  left     right
-   * ls-br[-r]
-   * branch    source   target
-   * mkbranch  path
-   * branchify path
-   * dissolve  path
-   * merge     from     to       yca@rev
-   * mv        source   target
-   * mkdir     target
-   * put       src-file target
-   * cp        source   target
-   * rm        target
-   */
+  /* argument paths */
   const char *relpath[3];
 } action_t;
 
@@ -389,6 +378,35 @@ subbranch_str(svn_branch_instance_t *bra
   return branch_str(subbranch, result_pool);
 }
 
+/* List all elements in branch-instance BRANCH.
+ */
+static svn_error_t *
+list_branch_elements(svn_branch_instance_t *branch,
+                     apr_pool_t *scratch_pool)
+{
+  svn_branch_family_t *family = branch->sibling_defn->family;
+  int eid;
+
+  for (eid = family->first_eid; eid < family->next_eid; eid++)
+    {
+      const char *rrpath = svn_branch_get_rrpath_by_eid(branch, eid,
+                                                        scratch_pool);
+
+      if (rrpath)
+        {
+          const char *relpath
+            = svn_relpath_skip_ancestor(svn_branch_get_root_rrpath(
+                                          branch, scratch_pool), rrpath);
+
+          printf("    e%d %s%s\n",
+                 eid, relpath[0] ? relpath : ".",
+                 subbranch_str(branch, eid, scratch_pool));
+        }
+    }
+
+  return SVN_NO_ERROR;
+}
+
 /* List all branch instances in FAMILY.
  *
  * If RECURSIVE is true, include branches in nested families.
@@ -419,7 +437,6 @@ family_list_branch_instances(svn_branch_
                             rev_root, family, scratch_pool), scratch_pool))
     {
       svn_branch_instance_t *branch = bi->val;
-      int eid;
 
       if (verbose)
         {
@@ -427,22 +444,7 @@ family_list_branch_instances(svn_branch_
                  svn_branch_instance_get_id(branch, bi->iterpool),
                  branch->sibling_defn->bid, branch->sibling_defn->root_eid,
                  svn_branch_get_root_rrpath(branch, bi->iterpool));
-          for (eid = family->first_eid; eid < family->next_eid; eid++)
-            {
-              const char *rrpath = svn_branch_get_rrpath_by_eid(branch, eid,
-                                                                bi->iterpool);
-
-              if (rrpath)
-                {
-                  const char *relpath
-                    = svn_relpath_skip_ancestor(svn_branch_get_root_rrpath(
-                                                  branch, bi->iterpool), rrpath);
-
-                  printf("    e%d %s%s\n",
-                         eid, relpath[0] ? relpath : ".",
-                         subbranch_str(branch, eid, bi->iterpool));
-                }
-            }
+          SVN_ERR(list_branch_elements(branch, bi->iterpool));
         }
       else
         {
@@ -1558,6 +1560,12 @@ execute(const apr_array_header_t *action
                       TRUE, TRUE, iterpool));
           }
           break;
+        case ACTION_LS:
+          {
+            VERIFY_EID_EXISTS("branches", 0);
+            SVN_ERR(list_branch_elements(el_rev[0]->branch, iterpool));
+          }
+          break;
         case ACTION_BRANCH:
           VERIFY_EID_EXISTS("branch", 0);
           VERIFY_REV_UNSPECIFIED("branch", 1);