summaryrefslogtreecommitdiff
path: root/builtin-pack-refs.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-11-02 16:42:23 -0700
committerJunio C Hamano <gitster@pobox.com>2007-11-02 16:42:23 -0700
commit3d66dc9657f195cb241387a87bcdd5709abd8a21 (patch)
treed60c114be03184c94b040ab531d2908ba1f66849 /builtin-pack-refs.c
parent265ae188267fda441f92e513fb89641f78e982fd (diff)
parent44c637c8021e44253f0f8cb17391092e08b39e73 (diff)
downloadgit-3d66dc9657f195cb241387a87bcdd5709abd8a21.tar.gz
Merge branch 'ph/parseopt'
* ph/parseopt: (24 commits) gc: use parse_options Fixed a command line option type for builtin-fsck.c Make builtin-pack-refs.c use parse_options. Make builtin-name-rev.c use parse_options. Make builtin-count-objects.c use parse_options. Make builtin-fsck.c use parse_options. Update manpages to reflect new short and long option aliases Make builtin-for-each-ref.c use parse-opts. Make builtin-symbolic-ref.c use parse_options. Make builtin-update-ref.c use parse_options Make builtin-revert.c use parse_options. Make builtin-describe.c use parse_options Make builtin-branch.c use parse_options. Make builtin-mv.c use parse-options Make builtin-rm.c use parse_options. Port builtin-add.c to use the new option parser. parse-options: allow callbacks to take no arguments at all. parse-options: Allow abbreviated options when unambiguous Add shortcuts for very often used options. parse-options: make some arguments optional, add callbacks. ... Conflicts: Makefile builtin-add.c
Diffstat (limited to 'builtin-pack-refs.c')
-rw-r--r--builtin-pack-refs.c47
1 files changed, 20 insertions, 27 deletions
diff --git a/builtin-pack-refs.c b/builtin-pack-refs.c
index 09df4e11a8..a62f06bb89 100644
--- a/builtin-pack-refs.c
+++ b/builtin-pack-refs.c
@@ -3,9 +3,7 @@
#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;
@@ -117,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);
}