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

Re: [PATCH 4/4] Implement git commit and status as a builtin commands.

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Nov 6, 2007, 06:59 UTC
Message-ID
<20071106065941.GA6423@atjola.homenet>
In-Reply-To
<Pine.LNX.4.64.0711052317170.4362@racer.site>
On 2007.11.05 23:18:36 +0000, Johannes Schindelin wrote:
Show 24 quoted lines
> Hi,
> 
> On Mon, 5 Nov 2007, Bj?rn Steinbrink wrote:
> 
> > On 2007.11.05 13:57:53 -0500, Kristian H?gsberg wrote:
> >
> > > The shell script just has
> > > 
> > > case "$all,$interactive,$also,$#" in
> > > *t,*t,*)
> > >         die "Cannot use -a, --interactive or -i at the same time." ;;
> > > 
> > > which doesn't seem to care about the value of $also.  As far as I 
> > > understand git commit, it doesn't make sense to pass any of -a, -i, -o 
> > > or --interactive at the same time so I guess I could join the checks
> > 
> > Note that there are only two commas. The asterisks catch everything and
> > $# won't be "t", so that catches anything with at least two t's.
> 
> So shouldn't it be
> 
> 	if (!!all + !!interactive + !!also > 1)
> 
> Hmm?

Ah, yeah, that's the short and sweet version, I always forget about the conversion to bool giving you 0/1 values... ;-)

Note though, that Kristian had a similar check at the end of his email, that included "only" (but lacked the bool conversion). The original reason why I thought that it would be better was that for example "git commit --all --only foo" didn't care about "only" at all. But that actually was because the --all + paths usage check was broken. So the fixed version actually refuses to use accept that, but with a (IMHO) not so good error message:

$ git commit -a -o file Paths with -a does not make sense.

Given that some people are used to just pass -a all the time, they might just automatically pass it together with -o. And I think that we actually want to tell them that -a + -o makes no sense instead. Just like we do for -a + -i, which is kind of the complementary usage error.

So I'd go for a correct version of Kristian's suggestion:
if (!!also + !!only + !!all + !!interactive > 1)
	die("Only one of --include/--only/--all/--interactive can be used.");
Björn
Previous: Johannes SchindelinNext: Kristian Høgsberg
Message 11 of 24 in “Add testcase for ammending and fixing author in git commit.”
  1. 1/4 Add testcase for ammending and fixing author in git commit.Kristian Høgsberg, Nov 2, 2007
  2. 2/4 Remove unecessary hard-coding of EDITOR=':' VISUAL=':' in some test suites.Kristian Høgsberg, Nov 2, 2007
  3. 3/4 Export launch_editor() and make it accept ':' as a no-op editor.Kristian Høgsberg, Nov 2, 2007
  4. 4/4 Implement git commit and status as a builtin commands.Kristian Høgsberg, Nov 2, 2007
  5. Johannes SchindelinNov 3, 2007
  6. Kristian HøgsbergNov 8, 2007
  7. Björn SteinbrinkNov 3, 2007
  8. Kristian HøgsbergNov 5, 2007
  9. Björn SteinbrinkNov 5, 2007
  10. Johannes SchindelinNov 5, 2007
  11. Björn SteinbrinkNov 6, 2007
  12. Kristian HøgsbergNov 6, 2007
  13. Björn SteinbrinkNov 6, 2007
  14. Pierre HabouzitNov 6, 2007
  15. Johannes SixtNov 6, 2007
  16. Pierre HabouzitNov 6, 2007
  17. Andreas EricssonNov 6, 2007
  18. Kristian HøgsbergNov 6, 2007
  19. Andreas EricssonNov 2, 2007
  20. Kristian HøgsbergNov 2, 2007
  21. Junio C HamanoNov 2, 2007
  22. Junio C HamanoNov 2, 2007
  23. Kristian HøgsbergNov 2, 2007
  24. Junio C HamanoNov 2, 2007

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.