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

Re: [PATCH v1] stash show: fix breakage in 1.7.3

From
Jon Seymour <jon.seymour@gmail.com>
Date
Sep 25, 2010, 06:19 UTC
Message-ID
<AANLkTimK4nTr9bS0L9xc9mGo5F900pUAOQoDnZ9HMdEz@mail.gmail.com>
In-Reply-To
<AF7816CF-7515-4386-9736-417005434433@gernhardtsoftware.com>

On Sat, Sep 25, 2010 at 2:45 PM, Brian Gernhardt <brian@gernhardtsoftware.com> wrote:

Show 7 quoted lines
>
> On Sep 24, 2010, at 11:32 PM, Jon Seymour wrote:
>
>> due to a faulty assumption that:
>>   git rev-parse --no-revs -- stash@{0}
>
> This assumption is faulty, it should be "git rev-parse --no-revs --flags stash@{0}", which works properly for all revision arguments and flags _except_ -q and --quiet.

Agreed. If I recall the evolution of the code, I originally had --no-revs --flags, but then found -q was being eaten. The only way to prevent it being eaten was to remove --flags and add --, which "fixed" the -q problem but created the git stash show xxx problem. Of course, had my unit tests been more thorough, I would have picked this, but alas they were not.

Show 7 quoted lines
>
>> This revision further simplifies the parsing code
>> by removing use of git rev-parse for FLAGS parsing
>> altogether.
>
> That is simpler, and does fix this specific issue.  However, I would strongly argue that "git rev-parse --no-revs --flags" is broken.  I really don't have the time tonight or probably this weekend to work on it, but git-rev-parse should only take "-q" and "--quiet" for itself if "--verify" was passed.  (Since that is the only mode in which rev-parse uses quiet, AFAIK.)
>
This seems like a reasonable compromise to me.
> Possibly rev-parse should also (or instead) separate "arguments for rev-parse" and "arguments rev-parse is parsing" using the standard "--".  I don't know if this will affect any current users.
>
I suspect this could be problematic.
Current behaviour:
   $ git rev-parse --flags -X -- Y -Z
   -X

Here -- is being used to say, don't interpret anything after -- as being flag-like even if it could be flag-like.

So, if a command foo uses git rev-parse to parse its own arguments:
    foo -X -- Y -Z

then I suspect, it would only want to treat -X as being flag-like, from the user of foo's point of view, both Y and -Z are not meant to be interpreted by foo.

It might make sense for --flags to be an instruction to git rev-parse not to interpret any subsequent arguments as git rev-parse options so that:

  $ git rev-parse --flags -q --no-flags -- --revs-only
would output:
  -q --no-flags

That is, prevent -q being eaten by git rev-parse, but preserve existing interpretation of --.

> ~~ Brian
>
>
Previous: Brian GernhardtNext: Jon Seymour
Message 16 of 27 in “git-1.7.3 breakage: "git stash show xxx" doesn't show anything”
  1. Robin H. JohnsonSep 24, 2010
  2. Brandon CaseySep 24, 2010
  3. Brian GernhardtSep 24, 2010
  4. t/t3903-stash: improve testing of git-stash showBrandon Casey, Sep 24, 2010
  5. Brian GernhardtSep 24, 2010
  6. Brandon CaseySep 24, 2010
  7. Brian GernhardtSep 24, 2010
  8. git-stash: fix flag parsingBrian Gernhardt, Sep 24, 2010
  9. git-stash: fix flag parsingBrian Gernhardt, Sep 24, 2010
  10. Jon SeymourSep 25, 2010
  11. Junio C HamanoSep 27, 2010
  12. stash: simplify parsing fixesJon Seymour, Sep 27, 2010
  13. stash show: fix breakage in 1.7.3Jon Seymour, Sep 25, 2010
  14. stash show: fix breakage in 1.7.3Jon Seymour, Sep 25, 2010
  15. Brian GernhardtSep 25, 2010
  16. Jon SeymourSep 25, 2010
  17. Jon SeymourSep 25, 2010
  18. Jon SeymourSep 27, 2010
  19. rev-parse: stop interpreting flags as options to rev-parse once --flags is specifiedJon Seymour, Sep 25, 2010
  20. Jon SeymourSep 25, 2010
  21. Jon SeymourSep 25, 2010
  22. Junio C HamanoSep 26, 2010
  23. Jon SeymourSep 26, 2010
  24. 0/3 rev-parse: allow --flags to output rev-parse-like flagsJon Seymour, Sep 26, 2010
  25. 1/3 rev-parse: update Documentation of --flagsJon Seymour, Sep 26, 2010
  26. 2/3 rev-parse: add tests for git rev-parse --flags.Jon Seymour, Sep 26, 2010
  27. 3/3 rev-parse: stop interpreting flags as options to rev-parse once --flags is specifiedJon Seymour, Sep 26, 2010

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.