diff options
-rw-r--r-- | builtin/reflog.c | 38 | ||||
-rwxr-xr-x | t/t1418-reflog-exists.sh | 5 |
2 files changed, 21 insertions, 22 deletions
diff --git a/builtin/reflog.c b/builtin/reflog.c index 458764400b..9847e9db3d 100644 --- a/builtin/reflog.c +++ b/builtin/reflog.c @@ -27,8 +27,10 @@ static const char *const reflog_delete_usage[] = { NULL }; -static const char reflog_exists_usage[] = - BUILTIN_REFLOG_EXISTS_USAGE; +static const char *const reflog_exists_usage[] = { + BUILTIN_REFLOG_EXISTS_USAGE, + NULL, +}; static timestamp_t default_reflog_expire; static timestamp_t default_reflog_expire_unreachable; @@ -350,28 +352,20 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix) static int cmd_reflog_exists(int argc, const char **argv, const char *prefix) { - int i, start = 0; - - for (i = 1; i < argc; i++) { - const char *arg = argv[i]; - if (!strcmp(arg, "--")) { - i++; - break; - } - else if (arg[0] == '-') - usage(_(reflog_exists_usage)); - else - break; - } - - start = i; + struct option options[] = { + OPT_END() + }; + const char *refname; - if (argc - start != 1) - usage(_(reflog_exists_usage)); + argc = parse_options(argc, argv, prefix, options, reflog_exists_usage, + 0); + if (!argc) + usage_with_options(reflog_exists_usage, options); - if (check_refname_format(argv[start], REFNAME_ALLOW_ONELEVEL)) - die(_("invalid ref format: %s"), argv[start]); - return !reflog_exists(argv[start]); + refname = argv[0]; + if (check_refname_format(refname, REFNAME_ALLOW_ONELEVEL)) + die(_("invalid ref format: %s"), refname); + return !reflog_exists(refname); } /* diff --git a/t/t1418-reflog-exists.sh b/t/t1418-reflog-exists.sh index 60c6411ce3..d51ecd5e92 100755 --- a/t/t1418-reflog-exists.sh +++ b/t/t1418-reflog-exists.sh @@ -29,4 +29,9 @@ test_expect_success 'reflog exists works with a "--" delimiter' ' test_must_fail git reflog exists -- refs/heads/nonexistent ' +test_expect_success 'reflog exists works with a "--end-of-options" delimiter' ' + git reflog exists --end-of-options refs/heads/main && + test_must_fail git reflog exists --end-of-options refs/heads/nonexistent +' + test_done |