|
1 | 1 | #include "builtin.h" |
| 2 | +#include "config.h" |
| 3 | +#include "fsck.h" |
2 | 4 | #include "parse-options.h" |
3 | 5 | #include "refs.h" |
4 | 6 | #include "repository.h" |
|
7 | 9 | #define REFS_MIGRATE_USAGE \ |
8 | 10 | N_("git refs migrate --ref-format=<format> [--dry-run]") |
9 | 11 |
|
| 12 | +#define REFS_VERIFY_USAGE \ |
| 13 | + N_("git refs verify [--strict] [--verbose]") |
| 14 | + |
10 | 15 | static int cmd_refs_migrate(int argc, const char **argv, const char *prefix) |
11 | 16 | { |
12 | 17 | const char * const migrate_usage[] = { |
@@ -58,15 +63,44 @@ static int cmd_refs_migrate(int argc, const char **argv, const char *prefix) |
58 | 63 | return err; |
59 | 64 | } |
60 | 65 |
|
| 66 | +static int cmd_refs_verify(int argc, const char **argv, const char *prefix) |
| 67 | +{ |
| 68 | + struct fsck_options fsck_refs_options = FSCK_REFS_OPTIONS_DEFAULT; |
| 69 | + const char * const verify_usage[] = { |
| 70 | + REFS_VERIFY_USAGE, |
| 71 | + NULL, |
| 72 | + }; |
| 73 | + struct option options[] = { |
| 74 | + OPT_BOOL(0, "verbose", &fsck_refs_options.verbose, N_("be verbose")), |
| 75 | + OPT_BOOL(0, "strict", &fsck_refs_options.strict, N_("enable strict checking")), |
| 76 | + OPT_END(), |
| 77 | + }; |
| 78 | + int ret; |
| 79 | + |
| 80 | + argc = parse_options(argc, argv, prefix, options, verify_usage, 0); |
| 81 | + if (argc) |
| 82 | + usage(_("'git refs verify' takes no arguments")); |
| 83 | + |
| 84 | + git_config(git_fsck_config, &fsck_refs_options); |
| 85 | + prepare_repo_settings(the_repository); |
| 86 | + |
| 87 | + ret = refs_fsck(get_main_ref_store(the_repository), &fsck_refs_options); |
| 88 | + |
| 89 | + fsck_options_clear(&fsck_refs_options); |
| 90 | + return ret; |
| 91 | +} |
| 92 | + |
61 | 93 | int cmd_refs(int argc, const char **argv, const char *prefix) |
62 | 94 | { |
63 | 95 | const char * const refs_usage[] = { |
64 | 96 | REFS_MIGRATE_USAGE, |
| 97 | + REFS_VERIFY_USAGE, |
65 | 98 | NULL, |
66 | 99 | }; |
67 | 100 | parse_opt_subcommand_fn *fn = NULL; |
68 | 101 | struct option opts[] = { |
69 | 102 | OPT_SUBCOMMAND("migrate", &fn, cmd_refs_migrate), |
| 103 | + OPT_SUBCOMMAND("verify", &fn, cmd_refs_verify), |
70 | 104 | OPT_END(), |
71 | 105 | }; |
72 | 106 |
|
|
0 commit comments