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

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

From
Philip Oakley <philipoakley@iee.org>
Date
Sep 19, 2016, 14:46 UTC
Message-ID
<033051503D8C4F618B1E4879AFF8C28D@PhilipOakley>
In-Reply-To
<3b06b9ee-3975-acf1-41d8-02b774a2dd3c@drmicha.warpmail.net>
From: "Michael J Gruber" <git@drmicha.warpmail.net>
Show 54 quoted lines
> Philip Oakley venit, vidit, dixit 19.09.2016 12:56:
>> 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.

At the moment the cherry-pick man page's example implies that --do-walk is applied from the beginning, rather from the point given on the command line.

I had a very quick search of the *.c code for the options but didn't get any further. Hopefully the user issue/misunderstanding is elsewhere... I'll add this to my little list.

-- Philip

Previous: Michael J GruberNext: Junio C Hamano
Message 3 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.