|
7 | 7 | #include "cache.h"
|
8 | 8 | #include "tree.h"
|
9 | 9 | #include "cache-tree.h"
|
| 10 | +#include "parse-options.h" |
10 | 11 |
|
11 |
| -static const char write_tree_usage[] = |
12 |
| -"git write-tree [--missing-ok] [--prefix=<prefix>/]"; |
| 12 | +static const char * const write_tree_usage[] = { |
| 13 | + "git write-tree [--missing-ok] [--prefix=<prefix>/]", |
| 14 | + NULL |
| 15 | +}; |
13 | 16 |
|
14 | 17 | int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
|
15 | 18 | {
|
16 | 19 | int flags = 0, ret;
|
17 | 20 | const char *prefix = NULL;
|
18 | 21 | unsigned char sha1[20];
|
19 | 22 | const char *me = "git-write-tree";
|
| 23 | + struct option write_tree_options[] = { |
| 24 | + OPT_BIT(0, "missing-ok", &flags, "allow missing objects", |
| 25 | + WRITE_TREE_MISSING_OK), |
| 26 | + { OPTION_STRING, 0, "prefix", &prefix, "<prefix>/", |
| 27 | + "write tree object for a subdirectory <prefix>" , |
| 28 | + PARSE_OPT_LITERAL_ARGHELP }, |
| 29 | + { OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL, |
| 30 | + "only useful for debugging", |
| 31 | + PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL, |
| 32 | + WRITE_TREE_IGNORE_CACHE_TREE }, |
| 33 | + OPT_END() |
| 34 | + }; |
20 | 35 |
|
21 | 36 | git_config(git_default_config, NULL);
|
22 |
| - while (1 < argc) { |
23 |
| - const char *arg = argv[1]; |
24 |
| - if (!strcmp(arg, "--missing-ok")) |
25 |
| - flags |= WRITE_TREE_MISSING_OK; |
26 |
| - else if (!prefixcmp(arg, "--prefix=")) |
27 |
| - prefix = arg + 9; |
28 |
| - else if (!prefixcmp(arg, "--ignore-cache-tree")) |
29 |
| - /* |
30 |
| - * This is only useful for debugging, so I |
31 |
| - * do not bother documenting it. |
32 |
| - */ |
33 |
| - flags |= WRITE_TREE_IGNORE_CACHE_TREE; |
34 |
| - else |
35 |
| - usage(write_tree_usage); |
36 |
| - argc--; argv++; |
37 |
| - } |
38 |
| - |
39 |
| - if (argc > 2) |
40 |
| - die("too many options"); |
| 37 | + argc = parse_options(argc, argv, unused_prefix, write_tree_options, |
| 38 | + write_tree_usage, 0); |
41 | 39 |
|
42 | 40 | ret = write_cache_as_tree(sha1, flags, prefix);
|
43 | 41 | switch (ret) {
|
|
0 commit comments