* [PATCH 2/3] - Convert git-fsck-cache to argp
@ 2005-05-21 18:32 Sean
0 siblings, 0 replies; only message in thread
From: Sean @ 2005-05-21 18:32 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 611 bytes --]
First in a series of patches to convert git commands to use "argp" for
argument processing as suggested by Jeff Garzik. This patch converts
git-fsck-cache. It improves the usage message, adds a --version option,
and allows options to be combined together with a single leading dash.
Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Acked-by: "Jeff Garzik" <jgarzik@pobox.com>
Acked-by: "Junio C Hamano" <junkio@cox.net>
Documentation/git-fsck-cache.txt | 6 +++
fsck-cache.c | 60
++++++++++++++++++++++-----------------
2 files changed, 39 insertions(+), 27 deletions(-)
[-- Attachment #2: argp-fsck-cache-v3.patch --]
[-- Type: application/octet-stream, Size: 3267 bytes --]
Index: fsck-cache.c
===================================================================
--- 58741c69570705801db4b785681790d636475695/fsck-cache.c (mode:100644)
+++ uncommitted/fsck-cache.c (mode:100644)
@@ -1,5 +1,7 @@
#include <sys/types.h>
#include <dirent.h>
+#include <argp.h>
+const char *argp_program_version = VERSION;
#include "cache.h"
#include "commit.h"
@@ -407,36 +409,42 @@
find_file_objects(git_dir, "refs");
}
+static const char doc[] = "Perform repository consistency check";
+
+static struct argp_option options[] = {
+ {"unreachable", 'u', 0, 0, "Show missing objects or deltas"},
+ {"tags", 't', 0, 0, "Show revision tags"},
+ {"root", 'r', 0, 0, "Show root objects, ie. those without parents"},
+ {"delta-depth", 'd', 0, 0, "Show the maximum length of delta chains"},
+ {"cache", 'c', 0, 0, "Mark all objects referenced by cache as reachable"},
+ { }
+};
+
+static error_t parse_opt (int key, char *arg, struct argp_state *state)
+{
+ switch (key) {
+ case 'u': show_unreachable = 1; break;
+ case 't': show_tags = 1; break;
+ case 'r': show_root = 1; break;
+ case 'd': show_max_delta_depth = 1; break;
+ case 'c': keep_cache_objects = 1; break;
+ default: return ARGP_ERR_UNKNOWN;
+ }
+ return 0;
+}
+
+static const struct argp argp = { options, parse_opt, "[HEAD-SHA1...]", doc };
+
int main(int argc, char **argv)
{
int i, heads;
char *sha1_dir;
+ int idx;
- for (i = 1; i < argc; i++) {
- const char *arg = argv[i];
-
- if (!strcmp(arg, "--unreachable")) {
- show_unreachable = 1;
- continue;
- }
- if (!strcmp(arg, "--tags")) {
- show_tags = 1;
- continue;
- }
- if (!strcmp(arg, "--root")) {
- show_root = 1;
- continue;
- }
- if (!strcmp(arg, "--delta-depth")) {
- show_max_delta_depth = 1;
- continue;
- }
- if (!strcmp(arg, "--cache")) {
- keep_cache_objects = 1;
- continue;
- }
- if (*arg == '-')
- usage("git-fsck-cache [--tags] [[--unreachable] [--cache] <head-sha1>*]");
+ error_t rc = argp_parse(&argp, argc, argv, 0, &idx, NULL);
+ if (rc) {
+ fprintf(stderr, "argument failed: %s\n", strerror(rc));
+ return 1;
}
sha1_dir = get_object_directory();
@@ -450,7 +458,7 @@
expand_deltas();
heads = 0;
- for (i = 1; i < argc; i++) {
+ for (i = idx; i < argc; i++) {
const char *arg = argv[i];
if (*arg == '-')
Index: Documentation/git-fsck-cache.txt
===================================================================
--- 4708925e3e3b955ffcb417fc4acdbb0aafdf8dc0/Documentation/git-fsck-cache.txt (mode:100644)
+++ uncommitted/Documentation/git-fsck-cache.txt (mode:100644)
@@ -9,7 +9,8 @@
SYNOPSIS
--------
-'git-fsck-cache' [--tags] [--root] [[--unreachable] [--cache] <object>\*]
+'git-fsck-cache' [--tags] [--root] [--delta-depth]
+ [[--unreachable] [--cache] <object>\*]
DESCRIPTION
-----------
@@ -34,6 +35,9 @@
Consider any object recorded in the cache also as a head node for
an unreachability trace.
+--delta-depth::
+ Show length of longest delta chain.
+
It tests SHA1 and general object sanity, and it does full tracking of
the resulting reachability and everything else. It prints out any
corruption it finds (missing or bad objects), and if you use the
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-05-21 18:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-21 18:32 [PATCH 2/3] - Convert git-fsck-cache to argp Sean
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).