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

Re: git tag -h fatal error with global tag.sort config

From
Bagas Sanjaya <bagasdotme@gmail.com>
Date
Oct 18, 2021, 05:24 UTC
Message-ID
<cc1b7611-8ec1-db29-1678-f45ba08d9b68@gmail.com>
In-Reply-To
<20210912132757.GC76263@szeder.dev>
On 12/09/21 20.27, SZEDER Gábor wrote:
Show 39 quoted lines
> Interesting.  It bisects to 47bd3d0c14 (ref-filter: don't look for
> objects when outside of a repository, 2018-11-14), which, based on the
> error message, kind of makes sense, because 'git tag' uses the general
> ref-filter sorting facility.  Now, even if 'git tag -h' is executed in
> a repository, since 99caeed05d (Let 'git <command> -h' show usage
> without a git dir, 2009-11-09) run_builtin() special-cases the '-h'
> option and does not call setup_git_directory(), so cmd_tag() and
> everything invoked from within will mistakenly think that there is no
> repository.  And cmd_tag() parses the config before parsing the
> options (of course, otherwise command line options couldn't override
> the config), so it hits this die() before parse_options would get a
> change to act on the '-h' option.
> 
> Now, 'git branch' uses the same ref-filter sorting, but the equivalent
> 'git -c branch.sort=creatordate branch -h' command does show the usage
> as expected.  The relevant difference between cmd_branch() and
> cmd_tag() is that the former special-cases the '-h' option as well
> just before it would call git_config().  Doing the same in cmd_tag()
> like in the patch below seems to fix this issue, but I'm not sure that
> this is the right fix.
> 
> 
>    ---  >8  ---
> 
> diff --git a/builtin/tag.c b/builtin/tag.c
> index 065b6bf093..31b8cc4600 100644
> --- a/builtin/tag.c
> +++ b/builtin/tag.c
> @@ -485,6 +485,9 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
>   
>   	setup_ref_filter_porcelain_msg();
>   
> +	if (argc == 2 && !strcmp(argv[1], "-h"))
> +		usage_with_options(git_tag_usage, options);
> +
>   	git_config(git_tag_config, sorting_tail);
>   
>   	memset(&opt, 0, sizeof(opt));
> 
Sorry for long reply.
Patch applied and usage help appears.

But when I do `./bin-wrappers/git tag -h`, I don't see `usage:` header, and instead show the help starting from `-F`.

-- 
An old man doll... just what I always wanted! - Clara
Previous: Bagas Sanjaya
Message 5 of 5 in “git tag -h fatal error with global tag.sort config”
  1. Bagas SanjayaSep 12, 2021
  2. SZEDER GáborSep 12, 2021
  3. Jeff KingSep 12, 2021
  4. Bagas SanjayaSep 13, 2021
  5. Bagas SanjayaOct 18, 2021

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.