You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Daniel Rall <dl...@collab.net> on 2006/05/08 21:50:36 UTC

Some peg rev help text missing from command-line client

On Sat, 06 May 2006, Giovanni Bajo wrote:

> Garrett Rooney <ro...@electricjellyfish.net> wrote:
...
> > I believe Dan Rall added support for that to svn log already.  Not
> > sure about info.
> 
> It looks like "svn info" support for peg-revs was added in r13144 (but the help
> screen doesn't explicitally mention its support).  ...

It appears that several commands to the command-line binary are
missing help text along the lines of what we have for 'checkout':

$ svn help co
checkout (co): Check out a working copy from a repository.
usage: checkout URL[@REV]... [PATH]

  If specified, REV determines in which revision the URL is first
  looked up.
...

In addition, some of the help text -- for the commands that have it --
is inconsistent.  At least in some cases, it is appropriately
inconsistent.

* Mentions peg revs:
  blame, cat, checkout, diff, export, list, merge

* Does not apply:
  add, cleanup, commit, delete, help, import, lock, mkdir, move,
  [propdel, propedit, propget, proplist, propset] (even
  non-revprops?), resolved, revert, status, switch, unlock, update

* Does not mention, but needs to now/future:
  copy, info, log

Does this look like the appropriate set of commands which need peg rev
help text added for them?
-- 

Daniel Rall

Re: Some peg rev help text missing from command-line client

Posted by Blair Zajac <bl...@orcaware.com>.
On May 9, 2006, at 10:59 AM, C. Michael Pilato wrote:

> C. Michael Pilato wrote:
>> Daniel Rall wrote:
>>> svn switch http://repos-host/svn/branches/foo@37
>>
>> Adding implied values, this is:
>>
>>    svn switch -rHEAD http://repos-host/svn/branches/foo@37
>
> Actually, I should back up a step here.  I don't recall which way the
> community went on this discussion, whether an unspecified operational
> revision default to HEAD or to the same value as the peg revision.

Blast back to the past, but the operative revision defaults to the  
peg revision in my testing of 1.4.2.

Regards,
Blair

-- 
Blair Zajac, Ph.D.
<bl...@orcaware.com>
Subversion training, consulting and support
http://www.orcaware.com/svn/



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Some peg rev help text missing from command-line client

Posted by "C. Michael Pilato" <cm...@collab.net>.
C. Michael Pilato wrote:
> Daniel Rall wrote:
>>svn switch http://repos-host/svn/branches/foo@37
> 
> Adding implied values, this is:
> 
>    svn switch -rHEAD http://repos-host/svn/branches/foo@37

Actually, I should back up a step here.  I don't recall which way the
community went on this discussion, whether an unspecified operational
revision default to HEAD or to the same value as the peg revision.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Re: Some peg rev help text missing from command-line client

Posted by "C. Michael Pilato" <cm...@collab.net>.
Daniel Rall wrote:
> Mike, would you mind describing how the use cases for the following 
> commands differ?:

Sure, this is the whole reason the peg revision / operative revision syntax
discrimination exists:

> svn switch -r37 http://repos-host/svn/branches/foo

Adding implied values, this is:

   svn switch -r37 http://repos-host/svn/branches/foo@HEAD

So, switch my working copy to the way that the thing that currently (in
HEAD) lives at branches/foo looked back in revision 37 (even though it might
not have lived at branches/foo back in that revision).

> svn switch http://repos-host/svn/branches/foo@37

Adding implied values, this is:

   svn switch -rHEAD http://repos-host/svn/branches/foo@37

So, switch my working copy to the way that the thing that lived at
branches/foo back in revision 37 looks today in HEAD (even though it might
have since been moved to some other place).

See the difference?

There's a little gotcha in the second case in that Subversion can't really
search forward in history, so it just crosses its fingers and says, "I don't
know how to find out definitively where /branches/foo@37 might possible live
in HEAD (which could be multiple places, thanks to copies), but I can at
least see if some fork of that same line of history can still be found at
/branches/foo and, if so, use that."

> I'd have thought both commands were intended to "switch my working copy
> to the 'foo' branch as it looked in r37."

Nuh-uh.  See above.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Re: Some peg rev help text missing from command-line client

Posted by Daniel Rall <dl...@collab.net>.
On Tue, 09 May 2006, C. Michael Pilato wrote:

> Daniel Rall wrote:
> >>Only thing that seems wrong in this list is 'switch' -- can we not use the
> >>peg-rev syntax with 'svn switch'?  If not, that's a(n admittedly minor)
> >>shortcoming.
> > 
> > Yeah, I debated on that one (which also applies to 'switch
> > --relocate').  Neither prototype from svn_client.h includes a peg rev
> > parameter:
> > 
> > svn_error_t *
> > svn_client_switch(svn_revnum_t *result_rev,
> >                   const char *path,
> >                   const char *url,
> >                   const svn_opt_revision_t *revision,
> >                   svn_boolean_t recurse,
> >                   svn_client_ctx_t *ctx,
> >                   apr_pool_t *pool);
...
> > While a peg rev for the PATH parameter seems fairly redundant with
> > RESULT_REV, perhaps I should provide it for the sake of UI
> > consistency?  Looks like this would involve rev'ing the
> > svn_client_switch() API.
> 
> RESULT_REV tells the revision number that you were switched to, and is not
> the same as a peg revision.  (It's more closely related to the REVISION
> argument, which can represent a revision number or revision keyword.)
...

Mike, would you mind describing how the use cases for the following
commands differ?:

  svn switch -r37 http://repos-host/svn/branches/foo

  svn switch http://repos-host/svn/branches/foo@37

I'd have thought both commands were intended to "switch my working
copy to the 'foo' branch as it looked in r37."

-- 

Daniel Rall

Re: Some peg rev help text missing from command-line client

Posted by "C. Michael Pilato" <cm...@collab.net>.
Daniel Rall wrote:
>>Only thing that seems wrong in this list is 'switch' -- can we not use the
>>peg-rev syntax with 'svn switch'?  If not, that's a(n admittedly minor)
>>shortcoming.
> 
> Yeah, I debated on that one (which also applies to 'switch
> --relocate').  Neither prototype from svn_client.h includes a peg rev
> parameter:
> 
> svn_error_t *
> svn_client_switch(svn_revnum_t *result_rev,
>                   const char *path,
>                   const char *url,
>                   const svn_opt_revision_t *revision,
>                   svn_boolean_t recurse,
>                   svn_client_ctx_t *ctx,
>                   apr_pool_t *pool);
> 
> svn_error_t *
> svn_client_relocate(const char *dir,
>                     const char *from,
>                     const char *to,
>                     svn_boolean_t recurse,
>                     svn_client_ctx_t *ctx,
>                     apr_pool_t *pool);
> 
> 
> While a peg rev for the PATH parameter seems fairly redundant with
> RESULT_REV, perhaps I should provide it for the sake of UI
> consistency?  Looks like this would involve rev'ing the
> svn_client_switch() API.

RESULT_REV tells the revision number that you were switched to, and is not
the same as a peg revision.  (It's more closely related to the REVISION
argument, which can represent a revision number or revision keyword.)

> And how about svn_client_relocate()?

Relocate doesn't even have an operative revision, so I think it doesn't need
to have a peg revision either.  It's really just about rewriting working
copy URLs, and the whole point is that you *shouldn't* be using it to
traverse Time (only Space).

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Re: Some peg rev help text missing from command-line client

Posted by Daniel Rall <dl...@collab.net>.
On Tue, 09 May 2006, C. Michael Pilato wrote:

> Giovanni Bajo wrote:
> > Daniel Rall wrote:
> > 
> > 
> >>* Mentions peg revs:
> >> blame, cat, checkout, diff, export, list, merge
> >>* Does not apply:
> >> add, cleanup, commit, delete, help, import, lock, mkdir, move,
> >> [propdel, propedit, propget, proplist, propset] (even
> >> non-revprops?), resolved, revert, status, switch, unlock, update
> >>* Does not mention, but needs to now/future:
> >> copy, info, log
> >>
> >>Does this look like the appropriate set of commands which need peg rev
> >>help text added for them?
> > 
> > 
> > FWIW, it's fine by me!
> 
> Only thing that seems wrong in this list is 'switch' -- can we not use the
> peg-rev syntax with 'svn switch'?  If not, that's a(n admittedly minor)
> shortcoming.

Yeah, I debated on that one (which also applies to 'switch
--relocate').  Neither prototype from svn_client.h includes a peg rev
parameter:

svn_error_t *
svn_client_switch(svn_revnum_t *result_rev,
                  const char *path,
                  const char *url,
                  const svn_opt_revision_t *revision,
                  svn_boolean_t recurse,
                  svn_client_ctx_t *ctx,
                  apr_pool_t *pool);

svn_error_t *
svn_client_relocate(const char *dir,
                    const char *from,
                    const char *to,
                    svn_boolean_t recurse,
                    svn_client_ctx_t *ctx,
                    apr_pool_t *pool);


While a peg rev for the PATH parameter seems fairly redundant with
RESULT_REV, perhaps I should provide it for the sake of UI
consistency?  Looks like this would involve rev'ing the
svn_client_switch() API.

And how about svn_client_relocate()?
-- 

Daniel Rall

Re: Some peg rev help text missing from command-line client

Posted by "C. Michael Pilato" <cm...@collab.net>.
Giovanni Bajo wrote:
> Daniel Rall wrote:
> 
> 
>>* Mentions peg revs:
>> blame, cat, checkout, diff, export, list, merge
>>* Does not apply:
>> add, cleanup, commit, delete, help, import, lock, mkdir, move,
>> [propdel, propedit, propget, proplist, propset] (even
>> non-revprops?), resolved, revert, status, switch, unlock, update
>>* Does not mention, but needs to now/future:
>> copy, info, log
>>
>>Does this look like the appropriate set of commands which need peg rev
>>help text added for them?
> 
> 
> FWIW, it's fine by me!

Only thing that seems wrong in this list is 'switch' -- can we not use the
peg-rev syntax with 'svn switch'?  If not, that's a(n admittedly minor)
shortcoming.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

[PATCH] Some peg rev help text missing from command-line client

Posted by Daniel Rall <dl...@collab.net>.
On Tue, 09 May 2006, Giovanni Bajo wrote:

> Daniel Rall wrote:
> 
> >* Mentions peg revs:
> >  blame, cat, checkout, diff, export, list, merge
> >* Does not apply:
> >  add, cleanup, commit, delete, help, import, lock, mkdir, move,
> >  [propdel, propedit, propget, proplist, propset] (even
> >  non-revprops?), resolved, revert, status, switch, unlock, update
> >* Does not mention, but needs to now/future:
> >  copy, info, log
> >
> >Does this look like the appropriate set of commands which need peg rev
> >help text added for them?
> 
> FWIW, it's fine by me!

Hrm, svn_client_copy3() doesn't take an explicit peg rev either, only
a SRC_REVISION parameter:

svn_error_t *
svn_client_copy3(svn_commit_info_t **commit_info_p,
                 const char *src_path,
                 const svn_opt_revision_t *src_revision,
                 const char *dst_path,
                 svn_client_ctx_t *ctx,
                 apr_pool_t *pool);

For 'copy', I suppose that these two (redudant) UIs for specifying
SRC_REVISION should be handled in subversion/svn/copy-cmd.c, rather
than via the API?  AFAICT, specifying SRC_REVISION via a peg rev is
currently not handled there.

(This is a related discussion to the one about 'switch'.)



Here's a patch adding documentation for 'info' and 'log', which I will
propose for backport to 1.4.x after it's committed:

[[[
* subversion/svn/main.c
  (svn_cl__cmd_table): Document that 'info' and 'log' accept a peg
   rev.

Found by: giovannibajo
]]]

Index: subversion/svn/main.c
===================================================================
--- subversion/svn/main.c	(revision 19580)
+++ subversion/svn/main.c	(working copy)
@@ -367,10 +367,11 @@
 
   { "info", svn_cl__info, {0}, N_
     ("Display information about a local or remote item.\n"
-     "usage: info [TARGET...]\n"
+     "usage: info [TARGET[@REV]...]\n"
      "\n"
      "  Print information about each TARGET (default: '.')\n"
-     "  TARGET may be either a working-copy path or URL.\n"),
+     "  TARGET may be either a working-copy path or URL.  If specified, REV\n"
+     "  determines in which revision the target is first looked up.\n\n"),
     {'r', 'R', svn_cl__targets_opt, svn_cl__incremental_opt, svn_cl__xml_opt,
      SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
 
@@ -411,13 +412,15 @@
   { "log", svn_cl__log, {0}, N_
     ("Show the log messages for a set of revision(s) and/or file(s).\n"
      "usage: 1. log [PATH]\n"
-     "       2. log URL [PATH...]\n"
+     "       2. log URL[@REV] [PATH...]\n"
      "\n"
      "  1. Print the log messages for a local PATH (default: '.').\n"
      "     The default revision range is BASE:1.\n"
      "\n"
      "  2. Print the log messages for the PATHs (default: '.') under URL.\n"
-     "     The default revision range is HEAD:1.\n"
+     "     If specified, REV determines in which revision the URL is first\n"
+     "     looked up.  The default revision range is HEAD:1.\n"
+     "     \n"
      "\n"
      "  With -v, also print all affected paths with each log message.\n"
      "  With -q, don't print the log message body itself (note that this is\n"

Re: Some peg rev help text missing from command-line client

Posted by Giovanni Bajo <ra...@develer.com>.
Daniel Rall wrote:

>* Mentions peg revs:
>  blame, cat, checkout, diff, export, list, merge
>* Does not apply:
>  add, cleanup, commit, delete, help, import, lock, mkdir, move,
>  [propdel, propedit, propget, proplist, propset] (even
>  non-revprops?), resolved, revert, status, switch, unlock, update
>* Does not mention, but needs to now/future:
>  copy, info, log
>
>Does this look like the appropriate set of commands which need peg rev
>help text added for them?

FWIW, it's fine by me!
-- 
Giovanni Bajo

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org