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

Re: Problem with "dashless options"

From
Jeff King <peff@peff.net>
Date
Sep 9, 2009, 14:34 UTC
Message-ID
<20090909143455.GA10092@sigill.intra.peff.net>
In-Reply-To
<D69FA890-4249-4DC9-B8AE-C9F105F1AD3B@isy.liu.se>
On Wed, Sep 09, 2009 at 03:21:30PM +0200, Henrik Tidefelt wrote:
Show 6 quoted lines
> Yesterday I installed a fresh git (1.6.4.2) on my system using
> MacPorts.  Some of the git sub-commands work fine (for instance,
> checkout, status, remote), while push gives an error as follows:
> 
> $ git push isy next
> fatal: BUG: dashless options don't support arguments

Hmm. Very strange. The only code path that triggers this is an option declared with PARSE_OPT_NODASH but not PARSE_OPT_NOARG. But there are only two options in all of git that use PARSE_OPT_NODASH, and:

  1. They are in git grep, not git push.
  2. They correctly have PARSE_OPT_NOARG set.

Which leads me to believe that something is writing random cruft on top of the options struct. Either a stack overflow, or some issue related to your compiler (either a bug in the compiler, or something non-portable we are doing).

Can you try applying the patch below which will at least give us a bit more information about the offending option?

Also, does 1.6.4.1 work OK? Or any other earlier version? If so, can you try bisecting?

diff --git a/parse-options.c b/parse-options.c
index f7ce523..e93eb67 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -275,7 +275,15 @@ static int parse_nodash_opt(struct parse_opt_ctx_t *p, const char *arg,
 			continue;
 		if ((options->flags & PARSE_OPT_OPTARG) ||
 		    !(options->flags & PARSE_OPT_NOARG))
-			die("BUG: dashless options don't support arguments");
+			die("BUG: dashless options don't support arguments\n"
+			    "buggy option is:\n"
+			    " type: %d\n"
+			    " short_name: %c\n"
+			    " long_name: %s\n"
+			    " flags: %d\n",
+			    options->type, options->short_name,
+			    options->long_name, options->flags
+			);
 		if (!(options->flags & PARSE_OPT_NONEG))
 			die("BUG: dashless options don't support negation");
 		if (options->long_name)
Previous: Henrik TidefeltNext: Henrik Tidefelt
Message 2 of 8 in “Problem with "dashless options"”
  1. Henrik TidefeltSep 9, 2009
  2. Jeff KingSep 9, 2009
  3. Henrik TidefeltSep 9, 2009
  4. Pierre HabouzitSep 9, 2009
  5. Henrik TidefeltSep 9, 2009
  6. Pierre HabouzitSep 9, 2009
  7. Christopher CameronApr 27, 2010
  8. Andreas SchwabApr 27, 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.