From: "D. Ben Knoble" <ben.knoble+github@gmail.com>
To: git@vger.kernel.org
Cc: "D. Ben Knoble" <ben.knoble+github@gmail.com>,
Jeff King <peff@peff.net>, Elijah Newren <newren@gmail.com>,
Lessley Dennington <lessleydennington@gmail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: [PATCH 4/4] builtins: show help on "-h"/"--help-all" with more than 2 arguments left
Date: Sat, 26 Jul 2025 12:53:14 -0400 [thread overview]
Message-ID: <20250726165320.4039-5-ben.knoble+github@gmail.com> (raw)
In-Reply-To: <20250726165320.4039-1-ben.knoble+github@gmail.com>
When asking for short help on a previous command, the user may use their
shell history to recall a command like
git rebase new-base
Then inserting "-h" after "rebase" doesn't yield the help; make it so.
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
---
Notes:
I reviewed the following results
git grep '[^[:alpha:]-]-h' 'Documentation/**adoc' ':(exclude)Documentation/RelNotes'
The 2 commands that accept "-h" to mean other things are git-grep(1) and
git-ls-remote(1).
- "git grep -h 123" gives results sans filenames, while a lone "-h"
gives help. Behavior is unchanged from 2.48.1 (my local install).
- "git ls-remote -h" gives help; "git ls-remote -h origin" lists heads.
Behavior is unchanged from 2.48.1.
But I'd welcome a more thorough check to make sure I didn't overlook
things. This is probably the most controversial patch, and if it's
dropped, that would be alright (though it is helpful for me to reduce
typing).
builtin/merge-recursive.c | 2 +-
git.c | 2 +-
parse-options.c | 2 +-
usage.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 17aa4db37a..c433d26bdf 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -38,7 +38,7 @@ int cmd_merge_recursive(int argc,
if (argv[0] && ends_with(argv[0], "-subtree"))
o.subtree_shift = "";
- if (argc == 2 && (!strcmp(argv[1], "-h") ||
+ if (argc >= 2 && (!strcmp(argv[1], "-h") ||
!strcmp(argv[1], "--help-all"))) {
struct strbuf msg = STRBUF_INIT;
strbuf_addf(&msg, builtin_merge_recursive_usage, argv[0]);
diff --git a/git.c b/git.c
index 40d3df1b76..7fe4e15e2d 100644
--- a/git.c
+++ b/git.c
@@ -445,7 +445,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct
const char *prefix;
int run_setup = (p->option & (RUN_SETUP | RUN_SETUP_GENTLY));
- help = argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help-all"));
+ help = argc >= 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help-all"));
if (help && (run_setup & RUN_SETUP))
/* demote to GENTLY to allow 'git cmd -h' outside repo */
run_setup = RUN_SETUP_GENTLY;
diff --git a/parse-options.c b/parse-options.c
index e3ed42f709..b9a31c261c 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -1464,7 +1464,7 @@ void show_usage_with_options_if_asked(int ac, const char **av,
const char * const *usagestr,
const struct option *opts)
{
- if (ac == 2) {
+ if (ac >= 2) {
if (!strcmp(av[1], "-h")) {
usage_with_options_internal(NULL, usagestr, opts, style_normal, to_out);
exit(129);
diff --git a/usage.c b/usage.c
index 4c245ba0cb..244e8d37ed 100644
--- a/usage.c
+++ b/usage.c
@@ -192,7 +192,7 @@ static void show_usage_if_asked_helper(const char *err, ...)
void show_usage_if_asked(int ac, const char **av, const char *err)
{
- if (ac == 2 && (!strcmp(av[1], "-h") ||
+ if (ac >= 2 && (!strcmp(av[1], "-h") ||
!strcmp(av[1], "--help-all")))
show_usage_if_asked_helper(err);
}
--
2.48.1
next prev parent reply other threads:[~2025-07-26 16:54 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-26 16:53 [PATCH 0/4] permit -h/--help-all in more scenarios D. Ben Knoble
2025-07-26 16:53 ` [PATCH 1/4] t1517: fixup for ua/t1517-short-help-tests D. Ben Knoble
2025-07-26 21:57 ` Usman Akinyemi
2025-07-28 15:35 ` Junio C Hamano
2025-07-26 16:53 ` [PATCH 2/4] parse-options: name flags passed to usage_with_options_internal D. Ben Knoble
2025-07-28 15:26 ` Junio C Hamano
2025-07-28 18:19 ` Junio C Hamano
2025-07-30 22:05 ` D. Ben Knoble
2025-07-26 16:53 ` [PATCH 3/4] builtin: also setup gently for --help-all D. Ben Knoble
2025-07-28 15:33 ` Junio C Hamano
2025-07-30 22:00 ` D. Ben Knoble
2025-07-26 16:53 ` D. Ben Knoble [this message]
2025-07-27 0:28 ` [PATCH 4/4] builtins: show help on "-h"/"--help-all" with more than 2 arguments left Junio C Hamano
2025-07-30 21:55 ` D. Ben Knoble
2025-08-02 9:23 ` Jeff King
2025-08-02 16:10 ` D. Ben Knoble
2025-08-02 16:28 ` Jeff King
2025-08-02 17:05 ` D. Ben Knoble
2025-08-03 1:26 ` [PATCH v2 0/3] permit -h/--help-all in more scenarios D. Ben Knoble
2025-08-03 16:10 ` [PATCH v3 " D. Ben Knoble
2025-08-04 4:53 ` Junio C Hamano
2025-08-05 1:28 ` D. Ben Knoble
2025-08-03 16:10 ` [PATCH v3 1/3] t1517: fixup for ua/t1517-short-help-tests D. Ben Knoble
2025-08-03 16:41 ` Junio C Hamano
2025-08-03 16:43 ` D. Ben Knoble
2025-08-03 16:10 ` [PATCH v3 2/3] parse-options: refactor flags for usage_with_options_internal D. Ben Knoble
2025-08-03 16:10 ` [PATCH v3 3/3] builtin: also setup gently for --help-all D. Ben Knoble
2025-08-03 1:26 ` [PATCH v2 1/3] t1517: fixup for ua/t1517-short-help-tests D. Ben Knoble
2025-08-03 1:26 ` [PATCH v2 2/3] parse-options: refactor flags for usage_with_options_internal D. Ben Knoble
2025-08-03 1:26 ` [PATCH v2 3/3] builtin: also setup gently for --help-all D. Ben Knoble
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250726165320.4039-5-ben.knoble+github@gmail.com \
--to=ben.knoble+github@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=lessleydennington@gmail.com \
--cc=newren@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).