Author: danielsh
Date: Tue Dec  3 12:05:22 2019
New Revision: 1870750

URL: http://svn.apache.org/viewvc?rev=1870750&view=rev
Log:
Revert r1869578 and r1869579.

Thread: 
https://mail-archives.apache.org/mod_mbox/subversion-dev/201912.mbox/%3C697aa9cb-e03e-4270-8890-d30ae7cd781c%40www.fastmail.com%3E
(items #3 and #4)

Modified:
    subversion/trunk/CHANGES
    subversion/trunk/subversion/svn/info-cmd.c
    subversion/trunk/subversion/svn/svn.c
    subversion/trunk/subversion/tests/cmdline/info_tests.py

Modified: subversion/trunk/CHANGES
URL: 
http://svn.apache.org/viewvc/subversion/trunk/CHANGES?rev=1870750&r1=1870749&r2=1870750&view=diff
==============================================================================
--- subversion/trunk/CHANGES (original)
+++ subversion/trunk/CHANGES Tue Dec  3 12:05:22 2019
@@ -11,7 +11,6 @@ https://svn.apache.org/repos/asf/subvers
  User-visible changes:
   - Minor new features and improvements:
     * Add 'svn info --show-item=changelist' (r1869481)
-    * Add multiple item arguments to 'svn info --show-item=...' (r1869578)
 
 
 Version 1.13.0

Modified: subversion/trunk/subversion/svn/info-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/info-cmd.c?rev=1870750&r1=1870749&r2=1870750&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/info-cmd.c (original)
+++ subversion/trunk/subversion/svn/info-cmd.c Tue Dec  3 12:05:22 2019
@@ -411,8 +411,8 @@ typedef struct print_info_baton_t
    * The following fields are used by print_info_item().
    */
 
-  /* Which items to print. */
-  apr_array_header_t *print_whats;
+  /* Which item to print. */
+  info_item_t print_what;
 
   /* Do we expect to show info for multiple targets? */
   svn_boolean_t multiple_targets;
@@ -431,12 +431,12 @@ typedef struct print_info_baton_t
 } print_info_baton_t;
 
 
-/* Find the appropriate info_item_t for KEYWORDS_FROM_ARGV and initialize
+/* Find the appropriate info_item_t for KEYWORD and initialize
  * RECEIVER_BATON for print_info_item(). Use SCRATCH_POOL for
  * temporary allocation.
  */
 static svn_error_t *
-find_print_what(const char *keywords_from_argv,
+find_print_what(const char *keyword,
                 print_info_baton_t *receiver_baton,
                 apr_pool_t *scratch_pool)
 {
@@ -445,9 +445,7 @@ find_print_what(const char *keywords_fro
   svn_cl__simcheck_t *kwbuf = apr_palloc(
       scratch_pool, info_item_map_len * sizeof(svn_cl__simcheck_t));
   apr_size_t i;
-  apr_array_header_t *whats;
-  
-  /* Initialize KEYWORDS and KWBUF. */
+
   for (i = 0; i < info_item_map_len; ++i)
     {
       keywords[i] = &kwbuf[i];
@@ -456,67 +454,55 @@ find_print_what(const char *keywords_fro
       kwbuf[i].data = &info_item_map[i];
     }
 
-  whats = svn_cstring_split(keywords_from_argv, ",", TRUE, scratch_pool);
-  for (i = 0; i < whats->nelts; i++)
+  switch (svn_cl__similarity_check(keyword, keywords,
+                                   info_item_map_len, scratch_pool))
     {
-      const char *keyword = APR_ARRAY_IDX(whats, i, const char *);
-      switch (svn_cl__similarity_check(keyword, keywords,
-                                       info_item_map_len, scratch_pool))
-        {
-          const info_item_map_t *kw0;
-          const info_item_map_t *kw1;
-          const info_item_map_t *kw2;
-
-        case 0:                     /* Exact match. */
-          kw0 = keywords[0]->data;
-          APR_ARRAY_PUSH(receiver_baton->print_whats, info_item_t) =
-            kw0->print_what;
-          break;
+      const info_item_map_t *kw0;
+      const info_item_map_t *kw1;
+      const info_item_map_t *kw2;
+
+    case 0:                     /* Exact match. */
+      kw0 = keywords[0]->data;
+      receiver_baton->print_what = kw0->print_what;
+      return SVN_NO_ERROR;
 
-        case 1:
-          /* The best alternative isn't good enough */
-          return svn_error_createf(
-              SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-              _("'%s' is not a valid value for --show-item"),
-              keyword);
-
-        case 2:
-          /* There is only one good candidate */
-          kw0 = keywords[0]->data;
-          return svn_error_createf(
-              SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-              _("'%s' is not a valid value for --show-item;"
-                " did you mean '%s'?"),
-              keyword, kw0->keyword.data);
-
-        case 3:
-          /* Suggest a list of the most likely candidates */
-          kw0 = keywords[0]->data;
-          kw1 = keywords[1]->data;
-          return svn_error_createf(
-              SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-              _("'%s' is not a valid value for --show-item;"
-                " did you mean '%s' or '%s'?"),
-              keyword, kw0->keyword.data, kw1->keyword.data);
+    case 1:
+      /* The best alternative isn't good enough */
+      return svn_error_createf(
+          SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+          _("'%s' is not a valid value for --show-item"),
+          keyword);
+
+    case 2:
+      /* There is only one good candidate */
+      kw0 = keywords[0]->data;
+      return svn_error_createf(
+          SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+          _("'%s' is not a valid value for --show-item;"
+            " did you mean '%s'?"),
+          keyword, kw0->keyword.data);
+
+    case 3:
+      /* Suggest a list of the most likely candidates */
+      kw0 = keywords[0]->data;
+      kw1 = keywords[1]->data;
+      return svn_error_createf(
+          SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+          _("'%s' is not a valid value for --show-item;"
+            " did you mean '%s' or '%s'?"),
+          keyword, kw0->keyword.data, kw1->keyword.data);
 
-        default:
-          /* Never suggest more than three candidates */
-          kw0 = keywords[0]->data;
-          kw1 = keywords[1]->data;
-          kw2 = keywords[2]->data;
-          return svn_error_createf(
-              SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-              _("'%s' is not a valid value for --show-item;"
-                " did you mean '%s', '%s' or '%s'?"),
-              keyword, kw0->keyword.data, kw1->keyword.data, 
kw2->keyword.data);
-        }
+    default:
+      /* Never suggest more than three candidates */
+      kw0 = keywords[0]->data;
+      kw1 = keywords[1]->data;
+      kw2 = keywords[2]->data;
+      return svn_error_createf(
+          SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+          _("'%s' is not a valid value for --show-item;"
+            " did you mean '%s', '%s' or '%s'?"),
+          keyword, kw0->keyword.data, kw1->keyword.data, kw2->keyword.data);
     }
-
-  if (whats->nelts == 0)
-    return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                            _("--show-item requires a non-empty argument"));
-
-  return SVN_NO_ERROR;
 }
 
 /* A callback of type svn_client_info_receiver2_t.
@@ -1139,123 +1125,115 @@ print_info_item(void *baton,
          receiver_baton->path_prefix, target, pool));
   const char *const target_path =
     (receiver_baton->multiple_targets ? actual_target_path : NULL);
-  int i;
 
   if (receiver_baton->start_new_line)
     SVN_ERR(svn_cmdline_fputs("\n", stdout, pool));
 
-  for (i = 0; i < receiver_baton->print_whats->nelts; i++)
+  switch (receiver_baton->print_what)
     {
-      if (i > 0) 
-        SVN_ERR(svn_cmdline_fputs("\t", stdout, pool));
+    case info_item_kind:
+      SVN_ERR(print_info_item_string(svn_node_kind_to_word(info->kind),
+                                     target_path, pool));
+      break;
 
-      switch (APR_ARRAY_IDX(receiver_baton->print_whats, i, info_item_t))
-        {
-        case info_item_kind:
-          SVN_ERR(print_info_item_string(svn_node_kind_to_word(info->kind),
-                                         target_path, pool));
-          break;
+    case info_item_url:
+      SVN_ERR(print_info_item_string(info->URL, target_path, pool));
+      break;
 
-        case info_item_url:
-          SVN_ERR(print_info_item_string(info->URL, target_path, pool));
-          break;
+    case info_item_relative_url:
+      SVN_ERR(print_info_item_string(relative_url(info, pool),
+                                     target_path, pool));
+      break;
 
-        case info_item_relative_url:
-          SVN_ERR(print_info_item_string(relative_url(info, pool),
-                                         target_path, pool));
-          break;
+    case info_item_repos_root_url:
+      SVN_ERR(print_info_item_string(info->repos_root_URL, target_path, pool));
+      break;
 
-        case info_item_repos_root_url:
-          SVN_ERR(print_info_item_string(info->repos_root_URL, target_path,
-                                         pool));
-          break;
+    case info_item_repos_uuid:
+      SVN_ERR(print_info_item_string(info->repos_UUID, target_path, pool));
+      break;
 
-        case info_item_repos_uuid:
-          SVN_ERR(print_info_item_string(info->repos_UUID, target_path, pool));
-          break;
+    case info_item_repos_size:
+      if (info->kind != svn_node_file)
+        {
+          receiver_baton->start_new_line = FALSE;
+          return SVN_NO_ERROR;
+        }
 
-        case info_item_repos_size:
-          if (info->kind != svn_node_file)
+      if (info->size == SVN_INVALID_FILESIZE)
+        {
+          if (receiver_baton->multiple_targets)
             {
               receiver_baton->start_new_line = FALSE;
               return SVN_NO_ERROR;
             }
 
-          if (info->size == SVN_INVALID_FILESIZE)
-            {
-              if (receiver_baton->multiple_targets)
-                {
-                  receiver_baton->start_new_line = FALSE;
-                  return SVN_NO_ERROR;
-                }
-
-              return svn_error_createf(
-                  SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-                  _("can't show in-repository size of working copy file '%s'"),
-                  actual_target_path);
-            }
+          return svn_error_createf(
+              SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+              _("can't show in-repository size of working copy file '%s'"),
+              actual_target_path);
+        }
 
-          {
-            const char *sizestr;
-            SVN_ERR(svn_cl__format_file_size(&sizestr, info->size,
-                                             receiver_baton->file_size_unit,
-                                             TRUE, pool));
-            SVN_ERR(print_info_item_string(sizestr, target_path, pool));
-          }
-          break;
+      {
+        const char *sizestr;
+        SVN_ERR(svn_cl__format_file_size(&sizestr, info->size,
+                                         receiver_baton->file_size_unit,
+                                         TRUE, pool));
+        SVN_ERR(print_info_item_string(sizestr, target_path, pool));
+      }
+      break;
 
-        case info_item_revision:
-          SVN_ERR(print_info_item_revision(info->rev, target_path, pool));
-          break;
+    case info_item_revision:
+      SVN_ERR(print_info_item_revision(info->rev, target_path, pool));
+      break;
 
-        case info_item_last_changed_rev:
-          SVN_ERR(print_info_item_revision(info->last_changed_rev,
-                                           target_path, pool));
-          break;
+    case info_item_last_changed_rev:
+      SVN_ERR(print_info_item_revision(info->last_changed_rev,
+                                       target_path, pool));
+      break;
 
-        case info_item_last_changed_date:
-          SVN_ERR(print_info_item_string(
-                      (!info->last_changed_date ? NULL
-                       : svn_time_to_cstring(info->last_changed_date, pool)),
-                      target_path, pool));
-          break;
+    case info_item_last_changed_date:
+      SVN_ERR(print_info_item_string(
+                  (!info->last_changed_date ? NULL
+                   : svn_time_to_cstring(info->last_changed_date, pool)),
+                  target_path, pool));
+      break;
 
-        case info_item_last_changed_author:
-          SVN_ERR(print_info_item_string(info->last_changed_author,
-                                         target_path, pool));
-          break;
+    case info_item_last_changed_author:
+      SVN_ERR(print_info_item_string(info->last_changed_author,
+                                     target_path, pool));
+      break;
 
-        case info_item_wc_root:
-          SVN_ERR(print_info_item_string(
-                      (info->wc_info && info->wc_info->wcroot_abspath
-                       ? info->wc_info->wcroot_abspath : NULL),
-                      target_path, pool));
-          break;
+    case info_item_wc_root:
+      SVN_ERR(print_info_item_string(
+                  (info->wc_info && info->wc_info->wcroot_abspath
+                   ? info->wc_info->wcroot_abspath : NULL),
+                  target_path, pool));
+      break;
 
-        case info_item_schedule:
-          SVN_ERR(print_info_item_string(
-                      (info->wc_info
-                       ? schedule_str(info->wc_info->schedule) : NULL),
-                      target_path, pool));
-          break;
+    case info_item_schedule:
+      SVN_ERR(print_info_item_string(
+                  (info->wc_info
+                   ? schedule_str(info->wc_info->schedule) : NULL),
+                  target_path, pool));
+      break;
 
-        case info_item_depth:
-          SVN_ERR(print_info_item_string(
-                      ((info->wc_info && info->kind == svn_node_dir)
-                       ? svn_depth_to_word(info->wc_info->depth) : NULL),
-                      target_path, pool));
-          break;
+    case info_item_depth:
+      SVN_ERR(print_info_item_string(
+                  ((info->wc_info && info->kind == svn_node_dir)
+                   ? svn_depth_to_word(info->wc_info->depth) : NULL),
+                  target_path, pool));
+      break;
 
-        case info_item_changelist:
-          SVN_ERR(print_info_item_string(
-                      ((info->wc_info && info->wc_info->changelist)
-                       ? info->wc_info->changelist : NULL),
-                      target_path, pool));
-          break;
+    case info_item_changelist:
+      SVN_ERR(print_info_item_string(
+                  ((info->wc_info && info->wc_info->changelist)
+                   ? info->wc_info->changelist : NULL),
+                  target_path, pool));
+      break;
 
-        default:
-          SVN_ERR_MALFUNCTION();
-        }
+    default:
+      SVN_ERR_MALFUNCTION();
     }
 
   receiver_baton->start_new_line = TRUE;
@@ -1322,7 +1300,6 @@ svn_cl__info(apr_getopt_t *os,
   else if (opt_state->show_item)
     {
       receiver = print_info_item;
-      receiver_baton.print_whats = apr_array_make(pool, 5, 
sizeof(info_item_t));
 
       if (opt_state->incremental)
         return svn_error_create(

Modified: subversion/trunk/subversion/svn/svn.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1870750&r1=1870749&r2=1870750&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Tue Dec  3 12:05:22 2019
@@ -431,9 +431,7 @@ const apr_getopt_option_t svn_cl__option
                           "                             "
                           "current revision (recommended when tagging)")},
   {"show-item", opt_show_item, 1,
-                       N_("print only the items identified by ARG, which is\n"
-                          "                             "
-                          "a comma-separated list of:\n"
+                       N_("print only the item identified by ARG:\n"
                           "                             "
                           "   'kind'       node kind of TARGET\n"
                           "                             "

Modified: subversion/trunk/subversion/tests/cmdline/info_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/info_tests.py?rev=1870750&r1=1870749&r2=1870750&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/info_tests.py Tue Dec  3 12:05:22 
2019
@@ -644,10 +644,6 @@ def info_item_simple(sbox):
     ['1'], [],
     'info', '--show-item=revision', '--no-newline',
     sbox.ospath(''))
-  svntest.actions.run_and_verify_svn(
-    ['1\tdir'], [],
-    'info', '--show-item=revision,kind', '--no-newline',
-    sbox.ospath(''))
 
 
 def info_item_simple_multiple(sbox):


Reply via email to