reflog-delete: parse standard reflog options
authorBrandon Casey <casey@nrlssc.navy.mil>
Fri, 22 Feb 2008 21:08:59 +0000 (15:08 -0600)
committerJunio C Hamano <gitster@pobox.com>
Sat, 23 Feb 2008 06:57:34 +0000 (22:57 -0800)
Add support for some standard reflog options such as --dry-run and
--verbose to the reflog delete subcommand.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-reflog.c

index 8af75bc..77f70a6 100644 (file)
@@ -14,6 +14,8 @@
 
 static const char reflog_expire_usage[] =
 "git-reflog (show|expire) [--verbose] [--dry-run] [--stale-fix] [--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...";
+static const char reflog_delete_usage[] =
+"git-reflog delete [--verbose] [--dry-run] <refs>...";
 
 static unsigned long default_reflog_expire;
 static unsigned long default_reflog_expire_unreachable;
@@ -425,12 +427,28 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix)
        struct cmd_reflog_expire_cb cb;
        int i, status = 0;
 
-       if (argc < 2)
-               return error("Nothing to delete?");
-
        memset(&cb, 0, sizeof(cb));
 
        for (i = 1; i < argc; i++) {
+               const char *arg = argv[i];
+               if (!strcmp(arg, "--dry-run") || !strcmp(arg, "-n"))
+                       cb.dry_run = 1;
+               else if (!strcmp(arg, "--verbose"))
+                       cb.verbose = 1;
+               else if (!strcmp(arg, "--")) {
+                       i++;
+                       break;
+               }
+               else if (arg[0] == '-')
+                       usage(reflog_delete_usage);
+               else
+                       break;
+       }
+
+       if (argc - i < 1)
+               return error("Nothing to delete?");
+
+       for ( ; i < argc; i++) {
                const char *spec = strstr(argv[i], "@{");
                unsigned char sha1[20];
                char *ep, *ref;