|
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