mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
am: handle "-h" argument earlier
If the user provides "-h" on the command line, then our parse_options() invocation will show a usage message and quit. But if "-h" is the only argument, the git wrapper behaves specially: it ignores our RUN_SETUP flag and calls cmd_am() without having done repository setup at all. This is due to99caeed05
(Let 'git <command> -h' show usage without a git dir, 2009-11-09). Before cmd_am() calls parse_options(), though, it runs a few other setup functions. One of these is am_state_init(), which uses git_pathdup() to set up the default rebase-apply path. But calling git_pathdup() when we haven't done repository setup will fall back to using ".git". That's mostly harmless (since we won't use the value anyway), but is forbidden sinceb1ef400eec
("setup_git_env: avoid blind fall-back to ".git"", 2016-10-20), and we now BUG(). We can't easily move that setup to after the parse_options() call; the point is to set up defaults that are overwritten by the option parsing. Instead, we'll detect the "-h" case early and show the usage then. This matches the behavior of other builtins which have a similar setup-ordering issue (e.g., git-branch). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b06d364310
commit
f3a2fffe06
1 changed files with 3 additions and 0 deletions
|
@ -2319,6 +2319,9 @@ int cmd_am(int argc, const char **argv, const char *prefix)
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||||
|
usage_with_options(usage, options);
|
||||||
|
|
||||||
git_config(git_am_config, NULL);
|
git_config(git_am_config, NULL);
|
||||||
|
|
||||||
am_state_init(&state);
|
am_state_init(&state);
|
||||||
|
|
Loading…
Reference in a new issue