]>
Commit | Line | Data |
---|---|---|
c2e86add | 1 | #include "builtin.h" |
8e712ef6 | 2 | #include "config.h" |
f394e093 | 3 | #include "gettext.h" |
b2565ae5 | 4 | #include "parse-options.h" |
32d462ce | 5 | #include "refs.h" |
23a3f0cb | 6 | #include "repository.h" |
826ae79f | 7 | #include "revision.h" |
96884601 | 8 | |
b2565ae5 | 9 | static char const * const pack_refs_usage[] = { |
4fe42f32 | 10 | N_("git pack-refs [--all] [--no-prune] [--include <pattern>] [--exclude <pattern>]"), |
b2565ae5 PH |
11 | NULL |
12 | }; | |
13 | ||
99b5a79e LT |
14 | int cmd_pack_refs(int argc, const char **argv, const char *prefix) |
15 | { | |
68dce6e9 | 16 | unsigned int flags = PACK_REFS_PRUNE; |
826ae79f | 17 | static struct ref_exclusions excludes = REF_EXCLUSIONS_INIT; |
4fe42f32 JC |
18 | static struct string_list included_refs = STRING_LIST_INIT_NODUP; |
19 | struct pack_refs_opts pack_refs_opts = { .exclusions = &excludes, | |
20 | .includes = &included_refs, | |
21 | .flags = flags }; | |
826ae79f JC |
22 | static struct string_list option_excluded_refs = STRING_LIST_INIT_NODUP; |
23 | struct string_list_item *item; | |
24 | ||
b2565ae5 | 25 | struct option opts[] = { |
826ae79f JC |
26 | OPT_BIT(0, "all", &pack_refs_opts.flags, N_("pack everything"), PACK_REFS_ALL), |
27 | OPT_BIT(0, "prune", &pack_refs_opts.flags, N_("prune loose refs (default)"), PACK_REFS_PRUNE), | |
4fe42f32 JC |
28 | OPT_STRING_LIST(0, "include", pack_refs_opts.includes, N_("pattern"), |
29 | N_("references to include")), | |
826ae79f JC |
30 | OPT_STRING_LIST(0, "exclude", &option_excluded_refs, N_("pattern"), |
31 | N_("references to exclude")), | |
b2565ae5 PH |
32 | OPT_END(), |
33 | }; | |
8e712ef6 | 34 | git_config(git_default_config, NULL); |
37782920 | 35 | if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0)) |
b2565ae5 | 36 | usage_with_options(pack_refs_usage, opts); |
826ae79f JC |
37 | |
38 | for_each_string_list_item(item, &option_excluded_refs) | |
39 | add_ref_exclusion(pack_refs_opts.exclusions, item->string); | |
40 | ||
4fe42f32 JC |
41 | if (pack_refs_opts.flags & PACK_REFS_ALL) |
42 | string_list_append(pack_refs_opts.includes, "*"); | |
43 | ||
44 | if (!pack_refs_opts.includes->nr) | |
45 | string_list_append(pack_refs_opts.includes, "refs/tags/*"); | |
46 | ||
826ae79f | 47 | return refs_pack_refs(get_main_ref_store(the_repository), &pack_refs_opts); |
e1e22e37 | 48 | } |