reflog [show]: display sensible -h output

Change the "git reflog show -h" output to show the usage summary relevant to it, rather than displaying the same output that "git log -h" would show. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Mar 17, 2022 at 19:08 UTC fbc15b13f7380ee7b52fdcb467c3438c569fd5de
2 files changed +28 -2
builtin/reflog.c
+23 -2
index 6bd176fe91..6c4fe1af40 100644 --- a/builtin/reflog.c +++ b/builtin/reflog.c @@ -5,6 +5,9 @@ #include "worktree.h" #include "reflog.h" +#define BUILTIN_REFLOG_SHOW_USAGE \ + N_("git reflog [show] [<log-options>] [<ref>]") + #define BUILTIN_REFLOG_EXPIRE_USAGE \ N_("git reflog expire [--expire=<time>] [--expire-unreachable=<time>]\n" \ " [--rewrite] [--updateref] [--stale-fix]\n" \ @@ -17,6 +20,11 @@ #define BUILTIN_REFLOG_EXISTS_USAGE \ N_("git reflog exists <ref>") +static const char *const reflog_show_usage[] = { + BUILTIN_REFLOG_SHOW_USAGE, + NULL, +}; + static const char *const reflog_expire_usage[] = { BUILTIN_REFLOG_EXPIRE_USAGE, NULL @@ -33,7 +41,7 @@ static const char *const reflog_exists_usage[] = { }; static const char *const reflog_usage[] = { - N_("git reflog [show] [<log-options>] [<ref>]"), + BUILTIN_REFLOG_SHOW_USAGE, BUILTIN_REFLOG_EXPIRE_USAGE, BUILTIN_REFLOG_DELETE_USAGE, BUILTIN_REFLOG_EXISTS_USAGE, @@ -207,6 +215,19 @@ static int expire_total_callback(const struct option *opt, return 0; } +static int cmd_reflog_show(int argc, const char **argv, const char *prefix) +{ + struct option options[] = { + OPT_END() + }; + + parse_options(argc, argv, prefix, options, reflog_show_usage, + PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_ARGV0 | + PARSE_OPT_KEEP_UNKNOWN); + + return cmd_log_reflog(argc - 1, argv + 1, prefix); +} + static int cmd_reflog_expire(int argc, const char **argv, const char *prefix) { struct cmd_reflog_expire_cb cmd = { 0 }; @@ -404,7 +425,7 @@ int cmd_reflog(int argc, const char **argv, const char *prefix) goto log_reflog; if (!strcmp(argv[1], "show")) - return cmd_log_reflog(argc - 1, argv + 1, prefix); + return cmd_reflog_show(argc, argv, prefix); else if (!strcmp(argv[1], "expire")) return cmd_reflog_expire(argc - 1, argv + 1, prefix); else if (!strcmp(argv[1], "delete"))
t/t1410-reflog.sh
+5
index 0dc36d842b..3f469353ec 100755 --- a/t/t1410-reflog.sh +++ b/t/t1410-reflog.sh @@ -111,6 +111,11 @@ test_expect_success 'correct usage on sub-command -h' ' grep "git reflog expire" err ' +test_expect_success 'correct usage on "git reflog show -h"' ' + test_expect_code 129 git reflog show -h >err && + grep -F "git reflog [show]" err +' + test_expect_success 'pass through -- to sub-command' ' test_when_finished "rm -rf repo" && git init repo &&