Author: julianfoad
Date: Wed Apr 15 08:20:54 2015
New Revision: 1673679

URL: http://svn.apache.org/r1673679
Log:
On the 'move-tracking-2' branch: Change 'svnmover branches' to list
all branches rooted at a given element, rather than all branches in the
same family, now that there is only one family.

* subversion/svnmover/svnmover.c
  (action_defn): Update the help text for 'branches'.
  (branch_info): New, factored out of 'family_list_branch_instances'.
  (list_branches): New.
  (family_list_branch_instances): Delegate to 'branch_info' to print the info.
  (execute): Call 'list_branches' for the 'branches' command.

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=1673679&r1=1673678&r2=1673679&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Wed Apr 
15 08:20:54 2015
@@ -243,7 +243,7 @@ typedef struct action_defn_t {
 static const action_defn_t action_defn[] =
 {
   {ACTION_LIST_BRANCHES,    "branches", 1, "PATH",
-    "list all branches in the same family as that at PATH"},
+    "list all branches rooted at the same element as PATH"},
   {ACTION_LIST_BRANCHES_R,  "ls-br-r", 0, "",
     "list all branches, recursively"},
   {ACTION_LS,               "ls", 1, "PATH",
@@ -389,6 +389,56 @@ list_branch_elements(svn_branch_instance
   return SVN_NO_ERROR;
 }
 
+/* List all branch instances rooted at EID.
+ */
+static svn_error_t *
+branch_info(svn_branch_instance_t *branch,
+            svn_boolean_t verbose,
+            apr_pool_t *scratch_pool)
+{
+  if (verbose)
+    {
+      printf("  branch %s bsid=%d root=e%d /%s\n",
+             svn_branch_instance_get_id(branch, scratch_pool),
+             branch->sibling_defn->bsid, branch->sibling_defn->root_eid,
+             svn_branch_get_root_rrpath(branch, scratch_pool));
+      SVN_ERR(list_branch_elements(branch, scratch_pool));
+    }
+  else
+    {
+      printf("  %s /%s\n",
+             svn_branch_instance_get_id(branch, scratch_pool),
+             svn_branch_get_root_rrpath(branch, scratch_pool));
+    }
+
+  return SVN_NO_ERROR;
+}
+
+/* List all branch instances rooted at EID.
+ */
+static svn_error_t *
+list_branches(svn_branch_revision_root_t *rev_root,
+              int eid,
+              svn_boolean_t verbose,
+              apr_pool_t *scratch_pool)
+{
+  SVN_ITER_T(svn_branch_instance_t) *bi;
+
+  printf("branches rooted at e%d:\n", eid);
+
+  for (SVN_ARRAY_ITER(bi, svn_branch_family_get_branch_instances(
+                            rev_root, 
rev_root->root_branch->sibling_defn->family, scratch_pool), scratch_pool))
+    {
+      svn_branch_instance_t *branch = bi->val;
+
+      if (branch->sibling_defn->root_eid != eid)
+        continue;
+      SVN_ERR(branch_info(branch, verbose, bi->iterpool));
+    }
+
+  return SVN_NO_ERROR;
+}
+
 /* List all branch instances in FAMILY.
  */
 static svn_error_t *
@@ -415,20 +465,7 @@ family_list_branch_instances(svn_branch_
     {
       svn_branch_instance_t *branch = bi->val;
 
-      if (verbose)
-        {
-          printf("  branch %s bsid=%d root=e%d /%s\n",
-                 svn_branch_instance_get_id(branch, bi->iterpool),
-                 branch->sibling_defn->bsid, branch->sibling_defn->root_eid,
-                 svn_branch_get_root_rrpath(branch, bi->iterpool));
-          SVN_ERR(list_branch_elements(branch, bi->iterpool));
-        }
-      else
-        {
-          printf("  %s /%s\n",
-                 svn_branch_instance_get_id(branch, bi->iterpool),
-                 svn_branch_get_root_rrpath(branch, bi->iterpool));
-        }
+      SVN_ERR(branch_info(branch, verbose, bi->iterpool));
     }
 
   return SVN_NO_ERROR;
@@ -1566,9 +1603,9 @@ execute(const apr_array_header_t *action
         case ACTION_LIST_BRANCHES:
           {
             VERIFY_EID_EXISTS("branches", 0);
-            SVN_ERR(family_list_branch_instances(
+            SVN_ERR(list_branches(
                       el_rev[0]->branch->rev_root,
-                      el_rev[0]->branch->sibling_defn->family,
+                      el_rev[0]->eid,
                       FALSE, iterpool));
           }
           break;


Reply via email to