Author: dsahlberg
Date: Thu Jul  6 20:34:52 2023
New Revision: 1910826

URL: http://svn.apache.org/viewvc?rev=1910826&view=rev
Log:
First try to document the trailing-@ trick to avoid triggering the peg-revision
parser when a path/target/url contains an @ character.

* subversion/svn/svn.c:
  (svn_cl__options declaration): Add [@] and description where needed

Discussed on mailing list:
https://lists.apache.org/thread/nb8d62wgj0mhlsv39z7qjgvkvp41sslv

Modified:
    subversion/trunk/subversion/svn/svn.c

Modified: subversion/trunk/subversion/svn/svn.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1910826&r1=1910825&r2=1910826&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Thu Jul  6 20:34:52 2023
@@ -424,7 +424,7 @@ svn_cl__cmd_table_main[] =
 {
   { "add", svn_cl__add, {0}, {N_(
      "Put new files and directories under version control.\n"
-     "usage: add PATH...\n"
+     "usage: add PATH[@]...\n"
      "\n"), N_(
      "  Schedule unversioned PATHs for addition, so they will become versioned 
and\n"
      "  be added to the repository in the next commit. Recurse into 
directories by\n"
@@ -444,7 +444,9 @@ svn_cl__cmd_table_main[] =
      "\n"), N_(
      "  The selection of items to add may be influenced by the 'ignores' 
feature.\n"
      "  Properties may be attached to the items as configured by the 
'auto-props'\n"
-     "  feature.\n"
+     "  feature.\n", N_(
+     "  If PATH contains an @ character, an additional @ must be specified at 
the\n"
+     "  end of PATH to avoid interpreting the first @ as a peg revision 
indicator.\n"
     )},
     {opt_targets, 'N', opt_depth, 'q', opt_force, opt_no_ignore, opt_autoprops,
      opt_no_autoprops, opt_parents },
@@ -516,8 +518,8 @@ svn_cl__cmd_table_main[] =
   { "changelist", svn_cl__changelist, {"cl"}, {N_(
      "Associate (or dissociate) changelist CLNAME with the named\n"
      "files.\n"
-     "usage: 1. changelist CLNAME PATH...\n"
-     "       2. changelist --remove PATH...\n"
+     "usage: 1. changelist CLNAME PATH[@]...\n"
+     "       2. changelist --remove PATH[@]...\n"
     )},
     { 'q', 'R', opt_depth, opt_remove, opt_targets, opt_changelist} },
 
@@ -539,6 +541,8 @@ svn_cl__cmd_table_main[] =
      "  out into a sub-directory of PATH, with the name of the sub-directory\n"
      "  being the basename of the URL.\n"
      "\n"), N_(
+     "  If PATH contains an @ character, an additional @ must be specified at 
the\n"
+     "  end of PATH to avoid interpreting the first @ as a peg revision 
indicator.\n", N_(
      "  If --force is used, unversioned obstructing paths in the working\n"
      "  copy destination do not automatically cause the check out to fail.\n"
      "  If the obstructing path is the same type (file or directory) as the\n"
@@ -560,10 +564,10 @@ svn_cl__cmd_table_main[] =
   { "cleanup", svn_cl__cleanup, {0}, {N_(
      "Either recover from an interrupted operation that left the working\n"
      "copy locked, or remove unwanted files.\n"
-     "usage: 1. cleanup [WCPATH...]\n"
-     "       2. cleanup --remove-unversioned [WCPATH...]\n"
-     "          cleanup --remove-ignored [WCPATH...]\n"
-     "       3. cleanup --vacuum-pristines [WCPATH...]\n"
+     "usage: 1. cleanup [WCPATH[@]...]\n"
+     "       2. cleanup --remove-unversioned [WCPATH[@]...]\n"
+     "          cleanup --remove-ignored [WCPATH[@]...]\n"
+     "       3. cleanup --vacuum-pristines [WCPATH[@]...]\n"
      "\n"), N_(
      "  1. When none of the options --remove-unversioned, --remove-ignored, 
and\n"
      "    --vacuum-pristines is specified, remove all write locks (shown as 
'L' by\n"
@@ -583,7 +587,9 @@ svn_cl__cmd_table_main[] =
      "\n"), N_(
      "  3. If the --vacuum-pristines option is given, remove pristine copies 
of\n"
      "    files which are stored inside the .svn directory and which are no 
longer\n"
-     "    referenced by any file in the working copy.\n"
+     "    referenced by any file in the working copy.\n", N_(
+     "  If WCPATH contains an @ character, an additional @ must be specified 
at the\n"
+     "  end of WCPATH to avoid interpreting the first @ as a peg revision 
indicator.\n"
     )},
     { opt_remove_unversioned, opt_remove_ignored, opt_vacuum_pristines,
       opt_include_externals, 'q', opt_merge_cmd },
@@ -591,7 +597,7 @@ svn_cl__cmd_table_main[] =
 
   { "commit", svn_cl__commit, {"ci"}, {N_(
      "Send changes from your working copy to the repository.\n"
-     "usage: commit [PATH...]\n"
+     "usage: commit [PATH[@]...]\n"
      "\n"), N_(
      "  A log message must be provided, but it can be empty.  If it is not\n"
      "  given by a --message or --file option, an editor will be started.\n"
@@ -601,7 +607,9 @@ svn_cl__cmd_table_main[] =
      "\n"), N_(
      "  If --include-externals is given, also commit file and directory\n"
      "  externals reached by recursion. Do not commit externals with a\n"
-     "  fixed revision.\n"
+     "  fixed revision.\n", N_(
+     "  If PATH contains an @ character, an additional @ must be specified at 
the\n"
+     "  end of PATH to avoid interpreting the first @ as a peg revision 
indicator.\n"
     )},
     {'q', 'N', opt_depth, opt_targets, opt_no_unlock, SVN_CL__LOG_MSG_OPTIONS,
      opt_changelist, opt_keep_changelists, opt_include_externals},
@@ -609,7 +617,7 @@ svn_cl__cmd_table_main[] =
 
   { "copy", svn_cl__copy, {"cp"}, {N_(
      "Copy files and directories in a working copy or repository.\n"
-     "usage: copy SRC[@REV]... DST\n"
+     "usage: copy SRC[@REV]... DST[@]\n"
      "\n"), N_(
      "  SRC and DST can each be either a working copy (WC) path or URL:\n"
      "    WC  -> WC:   copy and schedule for addition (with history)\n"
@@ -620,6 +628,8 @@ svn_cl__cmd_table_main[] =
      "  the sources will be added as children of DST. When copying multiple\n"
      "  sources, DST must be an existing directory.\n"
      "\n"), N_(
+     "  If DST contains an @ character, an additional @ must be specified at 
the\n"
+     "  end of DST to avoid interpreting the first @ as a peg revision 
indicator.\n", N_(
      "  WARNING: For compatibility with previous versions of Subversion,\n"
      "  copies performed using two working copy paths (WC -> WC) will not\n"
      "  contact the repository.  As such, they may not, by default, be able\n"
@@ -631,8 +641,8 @@ svn_cl__cmd_table_main[] =
 
   { "delete", svn_cl__delete, {"del", "remove", "rm"}, {N_(
      "Remove files and directories from version control.\n"
-     "usage: 1. delete PATH...\n"
-     "       2. delete URL...\n"
+     "usage: 1. delete PATH[@]...\n"
+     "       2. delete URL[@]...\n"
      "\n"), N_(
      "  1. Each item specified by a PATH is scheduled for deletion upon\n"
      "    the next commit.  Files, and directories that have not been\n"
@@ -642,7 +652,10 @@ svn_cl__cmd_table_main[] =
      "    not be removed unless the --force or --keep-local option is given.\n"
      "\n"), N_(
      "  2. Each item specified by a URL is deleted from the repository\n"
-     "    via an immediate commit.\n"
+     "    via an immediate commit.\n", N_(
+     "  If PATH or URL contains an @ character, an additional @ must be 
specified\n"
+     "  at the end of PATH to avoid interpreting the first @ as a peg 
revision\n"
+     "  indicator.\n"
     )},
     {opt_force, 'q', opt_targets, SVN_CL__LOG_MSG_OPTIONS, opt_keep_local} },
 
@@ -692,23 +705,26 @@ svn_cl__cmd_table_main[] =
 
   { "export", svn_cl__export, {0}, {N_(
      "Create an unversioned copy of a tree.\n"
-     "usage: 1. export [-r REV] URL[@PEGREV] [PATH]\n"
-     "       2. export [-r REV] PATH1[@PEGREV] [PATH2]\n"
+     "usage: 1. export [-r REV] URL[@PEGREV] [UNVERSIONED_PATH[@]]\n"
+     "       2. export [-r REV] WCPATH[@PEGREV] [UNVERSIONED_PATH[@]]\n"
      "\n"), N_(
      "  1. Exports a clean directory tree from the repository specified by\n"
      "     URL, at revision REV if it is given, otherwise at HEAD, into\n"
-     "     PATH. If PATH is omitted, the last component of the URL is used\n"
-     "     for the local directory name.\n"
+     "     UNVERSIONED_PATH. If UNVERSIONED_PATH is omitted, the last\n"
+     "     component of the URL is used for the local directory name.\n"
      "\n"), N_(
      "  2. Exports a clean directory tree from the working copy specified by\n"
-     "     PATH1, at revision REV if it is given, otherwise at WORKING, into\n"
-     "     PATH2.  If PATH2 is omitted, the last component of the PATH1 is 
used\n"
-     "     for the local directory name. If REV is not specified, all local\n"
-     "     changes will be preserved.  Files not under version control will\n"
-     "     not be copied.\n"
+     "     WCPATH, at revision REV if it is given, otherwise at WORKING, 
into\n"
+     "     UNVERSIONED_PATH. If UNVERSIONED_PATH is omitted, the last\n
+     "     component of the WCPATH is used for the local directory name. If\n"
+     "     REV is not specified, all local changes will be preserved. Files\n"
+     "     not under version control will not be copied.\n"
      "\n"), N_(
      "  If specified, PEGREV determines in which revision the target is 
first\n"
-     "  looked up.\n"
+     "  looked up.\n", N_(
+     "  If UNVERSIONED_PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of UNVERSIONED_PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'r', 'q', 'N', opt_depth, opt_force, opt_native_eol, opt_ignore_externals,
      opt_ignore_keywords},
@@ -1356,8 +1372,8 @@ svn_cl__cmd_table_main[] =
 
   { "mkdir", svn_cl__mkdir, {0}, {N_(
      "Create a new directory under version control.\n"
-     "usage: 1. mkdir PATH...\n"
-     "       2. mkdir URL...\n"
+     "usage: 1. mkdir PATH[@]...\n"
+     "       2. mkdir URL[@]...\n"
      "\n"), N_(
      "  Create version controlled directories.\n"
      "\n"), N_(
@@ -1369,12 +1385,16 @@ svn_cl__cmd_table_main[] =
      "\n"), N_(
      "  In both cases, all the intermediate directories must already exist,\n"
      "  unless the --parents option is given.\n"
+    ), N_(
+     "  If PATH or URL contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH/URL to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'q', opt_parents, SVN_CL__LOG_MSG_OPTIONS} },
 
   { "move", svn_cl__move, {"mv", "rename", "ren"}, {N_(
      "Move (rename) an item in a working copy or repository.\n"
-     "usage: move SRC... DST\n"
+     "usage: move SRC[@]... DST\n"
      "\n"), N_(
      "  SRC and DST can both be working copy (WC) paths or URLs:\n"
      "    WC  -> WC:  move an item in a working copy, as a local change to\n"
@@ -1390,6 +1410,10 @@ svn_cl__cmd_table_main[] =
      "  To avoid unnecessary conflicts, it is recommended to run 'svn 
update'\n"
      "  to update the subtree to a single revision before moving it.\n"
      "  The --allow-mixed-revisions option is provided for backward 
compatibility.\n"
+    ), N_(
+     "  If any SRC contains an @ character, an additional @ must be\n"
+     "  specified at the end of that SRC to avoid interpreting the\n"
+     "  first @ as a peg revision indicator. This does not apply to DST.\n"
     )},
     {'q', opt_force, opt_parents, opt_allow_mixed_revisions,
      SVN_CL__LOG_MSG_OPTIONS, 'r'},
@@ -1397,7 +1421,7 @@ svn_cl__cmd_table_main[] =
 
   { "patch", svn_cl__patch, {0}, {N_(
      "Apply a patch to a working copy.\n"
-     "usage: patch PATCHFILE [WCPATH]\n"
+     "usage: patch PATCHFILE [WCPATH[@]]\n"
      "\n"), N_(
      "  Apply a unidiff patch in PATCHFILE to the working copy WCPATH.\n"
      "  If WCPATH is omitted, '.' is assumed.\n"
@@ -1439,40 +1463,52 @@ svn_cl__cmd_table_main[] =
      "        To avoid rejects, first update to the revision N using\n"
      "        'svn update -r N', apply the patch, and then update back to 
the\n"
      "        HEAD revision. This way, conflicts can be resolved 
interactively.\n"
+    ), N_(
+     "  If WCPATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of WCPATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'q', opt_dry_run, opt_strip, opt_reverse_diff,
      opt_ignore_whitespace} },
 
   { "propdel", svn_cl__propdel, {"pdel", "pd"}, {N_(
      "Remove a property from files, dirs, or revisions.\n"
-     "usage: 1. propdel PROPNAME [PATH...]\n"
-     "       2. propdel PROPNAME --revprop -r REV [TARGET]\n"
+     "usage: 1. propdel PROPNAME [PATH[@]...]\n"
+     "       2. propdel PROPNAME --revprop -r REV [TARGET[@]]\n"
      "\n"), N_(
      "  1. Removes versioned props in working copy.\n"
      "  2. Removes unversioned remote prop on repos revision.\n"
      "     TARGET only determines which repository to access.\n"
      "\n"), N_(
      "  See 'svn help propset' for descriptions of the svn:* special 
properties.\n"
+    ), N_(
+     "  If PATH or TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH or TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'q', 'R', opt_depth, 'r', opt_revprop, opt_changelist} },
 
   { "propedit", svn_cl__propedit, {"pedit", "pe"}, {N_(
      "Edit a property with an external editor.\n"
-     "usage: 1. propedit PROPNAME TARGET...\n"
-     "       2. propedit PROPNAME --revprop -r REV [TARGET]\n"
+     "usage: 1. propedit PROPNAME TARGET[@]...\n"
+     "       2. propedit PROPNAME --revprop -r REV [TARGET[@]]\n"
      "\n"), N_(
      "  1. Edits versioned prop in working copy or repository.\n"
      "  2. Edits unversioned remote prop on repos revision.\n"
      "     TARGET only determines which repository to access.\n"
      "\n"), N_(
      "  See 'svn help propset' for descriptions of the svn:* special 
properties.\n"
+    ), N_(
+     "  If TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'r', opt_revprop, SVN_CL__LOG_MSG_OPTIONS, opt_force} },
 
   { "propget", svn_cl__propget, {"pget", "pg"}, {N_(
      "Print the value of a property on files, dirs, or revisions.\n"
      "usage: 1. propget PROPNAME [TARGET[@REV]...]\n"
-     "       2. propget PROPNAME --revprop -r REV [TARGET]\n"
+     "       2. propget PROPNAME --revprop -r REV [TARGET[@]]\n"
      "\n"), N_(
      "  1. Prints versioned props. If specified, REV determines in which\n"
      "     revision the target is first looked up.\n"
@@ -1490,6 +1526,10 @@ svn_cl__cmd_table_main[] =
      "  (useful when redirecting a binary property value to a file, for 
example).\n"
      "\n"), N_(
      "  See 'svn help propset' for descriptions of the svn:* special 
properties.\n"
+    ), N_(
+     "  If TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'v', 'R', opt_depth, 'r', opt_revprop, opt_strict, opt_no_newline, 
opt_xml,
      opt_changelist, opt_show_inherited_props },
@@ -1499,7 +1539,7 @@ svn_cl__cmd_table_main[] =
   { "proplist", svn_cl__proplist, {"plist", "pl"}, {N_(
      "List all properties on files, dirs, or revisions.\n"
      "usage: 1. proplist [TARGET[@REV]...]\n"
-     "       2. proplist --revprop -r REV [TARGET]\n"
+     "       2. proplist --revprop -r REV [TARGET[@]]\n"
      "\n"), N_(
      "  1. Lists versioned props. If specified, REV determines in which\n"
      "     revision the target is first looked up.\n"
@@ -1510,6 +1550,10 @@ svn_cl__cmd_table_main[] =
      "  --verbose'.  With --quiet, the paths are not printed.\n"
      "\n"), N_(
      "  See 'svn help propset' for descriptions of the svn:* special 
properties.\n"
+    ), N_(
+     "  If TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'v', 'R', opt_depth, 'r', 'q', opt_revprop, opt_xml, opt_changelist,
      opt_show_inherited_props },
@@ -1518,8 +1562,8 @@ svn_cl__cmd_table_main[] =
 
   { "propset", svn_cl__propset, {"pset", "ps"}, {N_(
      "Set the value of a property on files, dirs, or revisions.\n"
-     "usage: 1. propset PROPNAME PROPVAL PATH...\n"
-     "       2. propset PROPNAME --revprop -r REV PROPVAL [TARGET]\n"
+     "usage: 1. propset PROPNAME PROPVAL PATH[@]...\n"
+     "       2. propset PROPNAME --revprop -r REV PROPVAL [TARGET[@]]\n"
      "\n"), N_(
      "  1. Changes a versioned file or directory property in a working copy.\n"
      "  2. Changes an unversioned property on a repository revision.\n"
@@ -1602,6 +1646,10 @@ svn_cl__cmd_table_main[] =
      "      The ambiguous format 'relative_path relative_path' is taken as\n"
      "      'relative_url relative_path' with peg revision support.\n"
      "      Lines starting with a '#' character are ignored.\n"
+    ), N_(
+     "  If PATH or TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH or TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'F', opt_encoding, 'q', 'r', opt_targets, 'R', opt_depth, opt_revprop,
      opt_force, opt_changelist },
@@ -1633,7 +1681,7 @@ svn_cl__cmd_table_main[] =
 
   { "resolve", svn_cl__resolve, {0}, {N_(
      "Resolve conflicts on working copy files or directories.\n"
-     "usage: resolve [PATH...]\n"
+     "usage: resolve [PATH[@]...]\n"
      "\n"), N_(
      "  By default, perform interactive conflict resolution on PATH.\n"
      "  In this mode, the command is recursive by default (depth 
'infinity').\n"
@@ -1682,6 +1730,10 @@ svn_cl__cmd_table_main[] =
      "  files manually or with 'svn merge'. It may be necessary to discard 
some\n"
      "  local changes with 'svn revert'. Files or directories might have to 
be\n"
      "  copied, deleted, or moved.\n"
+    ), N_(
+     "  If PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {opt_targets, 'R', opt_depth, 'q', opt_accept},
     {{opt_accept, N_("specify automatic conflict resolution source\n"
@@ -1692,18 +1744,22 @@ svn_cl__cmd_table_main[] =
 
   { "resolved", svn_cl__resolved, {0}, {N_(
      "Remove 'conflicted' state on working copy files or directories.\n"
-     "usage: resolved PATH...\n"
+     "usage: resolved PATH[@]...\n"
      "\n"), N_(
      "  Note:  this subcommand does not semantically resolve conflicts or\n"
      "  remove conflict markers; it merely removes the conflict-related\n"
      "  artifact files and allows PATH to be committed again.  It has been\n"
      "  deprecated in favor of running 'svn resolve --accept working'.\n"
+    ), N_(
+     "  If PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {opt_targets, 'R', opt_depth, 'q'} },
 
   { "revert", svn_cl__revert, {0}, {N_(
      "Restore pristine working copy state (undo local changes).\n"
-     "usage: revert PATH...\n"
+     "usage: revert PATH[@]...\n"
      "\n"), N_(
      "  Revert changes in the working copy at or within PATH, and remove\n"
      "  conflict markers as well, if any.\n"
@@ -1711,13 +1767,17 @@ svn_cl__cmd_table_main[] =
      "  This subcommand does not revert already committed changes.\n"
      "  For information about undoing already committed changes, search\n"
      "  the output of 'svn help merge' for 'undo'.\n"
+    ), N_(
+     "  If PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {opt_targets, 'R', opt_depth, 'q', opt_changelist,
      opt_remove_added} },
 
   { "status", svn_cl__status, {"stat", "st"}, {N_(
      "Print the status of working copy files and directories.\n"
-     "usage: status [PATH...]\n"
+     "usage: status [PATH[@]...]\n"
      "\n"), N_(
      "  With no args, print only locally modified items (no network access).\n"
      "  With -q, print only summary information about locally modified 
items.\n"
@@ -1807,6 +1867,10 @@ svn_cl__cmd_table_main[] =
      "    !     C wc/qaz.c\n"
      "          >   local missing, incoming edit upon update\n"
      "    D       wc/qax.c\n"
+    ), N_(
+     "  If PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     { 'u', 'v', 'N', opt_depth, 'r', 'q', opt_no_ignore, opt_incremental,
       opt_xml, opt_ignore_externals, opt_changelist},
@@ -1865,16 +1929,20 @@ svn_cl__cmd_table_main[] =
 
   { "unlock", svn_cl__unlock, {0}, {N_(
      "Unlock working copy paths or URLs.\n"
-     "usage: unlock TARGET...\n"
+     "usage: unlock TARGET[@]...\n"
      "\n"), N_(
      "  Use --force to break a lock held by another user or working copy.\n"
+    ), N_(
+     "  If TARGET contains an @ character, an additional @ must be\n"
+     "  specified at the end of TARGET to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     { opt_targets, opt_force, 'q' },
     {{opt_force, N_("break locks")}} },
 
   { "update", svn_cl__update, {"up"},  {N_(
      "Bring changes from the repository into the working copy.\n"
-     "usage: update [PATH...]\n"
+     "usage: update [PATH[@]...]\n"
      "\n"), N_(
      "  If no revision is given, bring working copy up-to-date with HEAD 
rev.\n"
      "  Else synchronize working copy to revision given by -r.\n"
@@ -1918,6 +1986,10 @@ svn_cl__cmd_table_main[] =
      "\n"), N_(
      "  Use the --set-depth option to set a new working copy depth on the\n"
      "  targets of this operation.\n"
+    ), N_(
+     "  If PATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of PATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     {'r', 'N', opt_depth, opt_set_depth, 'q', opt_merge_cmd, opt_force,
      opt_ignore_externals, opt_changelist, opt_editor_cmd, opt_accept,
@@ -1928,7 +2000,7 @@ svn_cl__cmd_table_main[] =
 
   { "upgrade", svn_cl__upgrade, {0}, {N_(
      "Upgrade the metadata storage format for a working copy.\n"
-     "usage: upgrade [WCPATH...]\n"
+     "usage: upgrade [WCPATH[@]...]\n"
      "\n"), N_(
      "  The upgraded working copy will be compatible with Subversion 1.8 and\n"
      "  newer (this default may change in the future). To upgrade to a 
different\n"
@@ -1939,6 +2011,10 @@ svn_cl__cmd_table_main[] =
      "  Only upgrades are supported, not downgrades.\n"
      "\n"), N_(
      "  Local modifications are preserved.\n"
+    ), N_(
+     "  If WCPATH contains an @ character, an additional @ must be\n"
+     "  specified at the end of WCPATH to avoid interpreting the\n"
+     "  first @ as a peg revision indicator.\n"
     )},
     { 'q', opt_compatible_version } },
 


Reply via email to