git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: clarification of `rev-list --no-walk ^<rev>`?

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Sep 19, 2016, 13:46 UTC
Message-ID
<3b06b9ee-3975-acf1-41d8-02b774a2dd3c@drmicha.warpmail.net>
In-Reply-To
<2AD952BD65034D25BF26C7F138D24F25@PhilipOakley>
Philip Oakley venit, vidit, dixit 19.09.2016 12:56:
Show 42 quoted lines
> A question came up on the Git user list regarding cherry-pick that got me
> reading the manual (again), in this case regarding --no-walk ranges.
> 
> Essentially my question is: If --no-walk is given to rev-list (e.g. via
> charry-pick), and the user includes a caret prefixed rev, when does that
> range definition take effect on the command line, especially in light of
> the --do-walk option?
> 
> In rev-list(1) there are only 8 references to  'range', with only
> the --no-walk option saying "This has no effect if a range is specified."
> but leaving open the decision as to what does (and does not) comprises the
> specification of a range on the cli.
> 
> The two and three dot notations are fairly obvious ranges from
> gitrevisions(7) as they are complete strings, while the caret prefix is an 
> implied range (it needs additional parameters to complete the range, and 
> there-in lies the issue).
> 
> It can be read that
> 
> $ git cherry-pick maint next
> 
> would pick two single commits, while
> 
> $ git cherry-pick maint next ^master
> 
> could implicitly be read as
> 
> $ git cherry-pick maint next --do-walk ^master
> 
> because the ^ caret starts the range that cancels the --no-walk.
> 
> Clearly that's not what is intended, which is
> 
> $ git cherry-pick --do-walk maint next ^master
> 
> but it is open to interpretation as to where in the command line the caret
> range prefix's --do-walk (to countermand the --no-walk) should applied.
> 
> If the user did want just the single commit at the tip of maint, and then
> the range master..next, what would be their command line, and also, how
> would the man page warn against false expectations?
Maybe:

Every negative rev (rev prefixed with ^, or a range) implies a `--do-walk` (right at its position on the command line).

And then curb the misleading range sentence in the `--no-walk` description.
Michael
Previous: Philip OakleyNext: Philip Oakley
Message 2 of 13 in “clarification of `rev-list --no-walk ^<rev>`?”
  1. Philip OakleySep 19, 2016
  2. Michael J GruberSep 19, 2016
  3. Philip OakleySep 19, 2016
  4. Junio C HamanoSep 19, 2016
  5. Junio C HamanoSep 19, 2016
  6. Philip OakleySep 19, 2016
  7. Junio C HamanoSep 19, 2016
  8. Philip OakleySep 19, 2016
  9. Junio C HamanoSep 19, 2016
  10. Philip OakleySep 19, 2016
  11. Michael J GruberSep 21, 2016
  12. Michael J GruberSep 21, 2016
  13. Junio C HamanoSep 21, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.