builtin-blame: set up the work_tree before the first file access
[gitweb.git] / builtin-pack-refs.c
index 758499238f6d4110eb3740b77c92753edc8e5760..a62f06bb89aa6ef035c26c4aad05c0fdbf0512de 100644 (file)
@@ -1,10 +1,9 @@
+#include "builtin.h"
 #include "cache.h"
 #include "refs.h"
 #include "object.h"
 #include "tag.h"
-
-static const char builtin_pack_refs_usage[] =
-"git-pack-refs [--all] [--prune | --no-prune]";
+#include "parse-options.h"
 
 struct ref_to_prune {
        struct ref_to_prune *next;
@@ -116,31 +115,26 @@ static int pack_refs(unsigned int flags)
        return 0;
 }
 
+static char const * const pack_refs_usage[] = {
+       "git-pack-refs [options]",
+       NULL
+};
+
 int cmd_pack_refs(int argc, const char **argv, const char *prefix)
 {
-       int i;
-       unsigned int flags;
-
-       flags = PACK_REFS_PRUNE;
-       for (i = 1; i < argc; i++) {
-               const char *arg = argv[i];
-               if (!strcmp(arg, "--prune")) {
-                       flags |= PACK_REFS_PRUNE; /* now the default */
-                       continue;
-               }
-               if (!strcmp(arg, "--no-prune")) {
-                       flags &= ~PACK_REFS_PRUNE;
-                       continue;
-               }
-               if (!strcmp(arg, "--all")) {
-                       flags |= PACK_REFS_ALL;
-                       continue;
-               }
-               /* perhaps other parameters later... */
-               break;
-       }
-       if (i != argc)
-               usage(builtin_pack_refs_usage);
-
+       int all = 0, prune = 1;
+       unsigned int flags = 0;
+       struct option opts[] = {
+               OPT_BOOLEAN(0, "all", &all, "pack everything"),
+               OPT_BOOLEAN(0, "prune", &prune, "prune loose refs (default)"),
+               OPT_END(),
+       };
+
+       if (parse_options(argc, argv, opts, pack_refs_usage, 0))
+               usage_with_options(pack_refs_usage, opts);
+       if (prune)
+               flags |= PACK_REFS_PRUNE;
+       if (all)
+               flags |= PACK_REFS_ALL;
        return pack_refs(flags);
 }