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

Re: [PATCH 06/10] parse-options: never suppress arghelp if LITERAL_ARGHELP is set

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Dec 3, 2010, 09:40 UTC
Message-ID
<20101203094020.GA11910@burratino>
In-Reply-To
<4CF8B55F.8020203@gmail.com>
Stephen Boyd wrote:
> On 12/01/10 15:31, Jonathan Nieder wrote:
Show 8 quoted lines
>> The motivation is to allow update-index to correctly advertise
>> 
>> 	--cacheinfo <mode> <object> <path>
>> 	                      add the specified entry to the index
>> 
>> while abusing PARSE_OPT_NOARG to disallow the "sticked form"
>> 
>> 	--cacheinfo=<mode> <object> <path>
[...]
> parse-options should accept both forms of --cacheinfo above if the
> option isn't marked PARSE_OPT_NOARG. Marking it NOARG to get rid of the
> equals sign in the usage seems wrong when both the equals sign and no
> equals sign can be accepted.

Just to clarify: the NOARG was not meant to affect the usage message but the actual accepted usage. The idea was that

	git update-index --cacheinfo=100644 87a8767c87b file.c

should be rejected, because if it is accepted that would tempt people to try

	git update-index --cacheinfo=100644 -q 87a8767c87b file.c

which fails. That is, the argument to --cacheinfo is not <mode>, since --cacheinfo takes _three_ arguments and therefore the sticked form sends a wrong message.

Show 6 quoted lines
> I know this is a bit more code, but it also means that we don't have
> this approach bite someone else down the line when they make assumptions
> about options marked as NOARG not taking arguments.
>
> We should probably add another check like "if argh is set and
> PARSE_OPT_NOARG is true error out" so this can't be done.

I agree with your conclusion. Let's drop this patch, and I'll look into adding the check and a PARSE_OPT_NOSTICKED flag.

Previous: Stephen BoydNext: Stephen Boyd
Message 16 of 21 in “update-index: migrate to parse-options API”
  1. 00/10 update-index: migrate to parse-options APIJonathan Nieder, Dec 1, 2010
  2. 01/10 parse-options: Don't call parse_options_check() so muchJonathan Nieder, Dec 1, 2010
  3. René ScharfeDec 5, 2010
  4. Stephen BoydDec 6, 2010
  5. 02/10 parse-options: clearer reporting of API misuseJonathan Nieder, Dec 1, 2010
  6. Jonathan NiederDec 2, 2010
  7. 02/10 parse-options: clearer reporting of API misuseJonathan Nieder, Dec 2, 2010
  8. 02/10 parse-options: clearer reporting of API misuseJonathan Nieder, Dec 2, 2010
  9. 03/10 parse-options: move NODASH sanity checks to parse_options_checkJonathan Nieder, Dec 1, 2010
  10. 03/10 parse-options: move NODASH sanity checks to parse_options_checkJonathan Nieder, Dec 2, 2010
  11. 04/10 parse-options: sanity check PARSE_OPT_NOARG flagJonathan Nieder, Dec 1, 2010
  12. 04/10 parse-options: sanity check PARSE_OPT_NOARG flagJonathan Nieder, Dec 2, 2010
  13. 05/10 parse-options: do not infer PARSE_OPT_NOARG from option typeJonathan Nieder, Dec 1, 2010
  14. 06/10 parse-options: never suppress arghelp if LITERAL_ARGHELP is setJonathan Nieder, Dec 1, 2010
  15. Stephen BoydDec 3, 2010
  16. Jonathan NiederDec 3, 2010
  17. Stephen BoydDec 3, 2010
  18. 07/10 parse-options: allow git commands to invent new option typesJonathan Nieder, Dec 1, 2010
  19. 08/10 parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTIONJonathan Nieder, Dec 1, 2010
  20. 09/10 setup: save prefix (original cwd relative to toplevel) in startup_infoJonathan Nieder, Dec 1, 2010
  21. 10/10 update-index: migrate to parse-options APIJonathan Nieder, Dec 1, 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.