Merge branch 'jc/fsck'

* jc/fsck:
  fsck-objects: Remove --standalone
maint
Junio C Hamano 2006-03-13 00:04:05 -08:00
commit 41ce93bea4
2 changed files with 9 additions and 26 deletions

View File

@ -10,7 +10,7 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] 'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache]
[--standalone | --full] [--strict] [<object>*] [--full] [--strict] [<object>*]


DESCRIPTION DESCRIPTION
----------- -----------
@ -38,21 +38,14 @@ index file and all SHA1 references in .git/refs/* as heads.
Consider any object recorded in the index also as a head node for Consider any object recorded in the index also as a head node for
an unreachability trace. an unreachability trace.


--standalone::
Limit checks to the contents of GIT_OBJECT_DIRECTORY
($GIT_DIR/objects), making sure that it is consistent and
complete without referring to objects found in alternate
object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,
nor packed git archives found in $GIT_DIR/objects/pack;
cannot be used with --full.

--full:: --full::
Check not just objects in GIT_OBJECT_DIRECTORY Check not just objects in GIT_OBJECT_DIRECTORY
($GIT_DIR/objects), but also the ones found in alternate ($GIT_DIR/objects), but also the ones found in alternate
object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES, object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES
or $GIT_DIR/objects/info/alternates,
and in packed git archives found in $GIT_DIR/objects/pack and in packed git archives found in $GIT_DIR/objects/pack
and corresponding pack subdirectories in alternate and corresponding pack subdirectories in alternate
object pools; cannot be used with --standalone. object pools.


--strict:: --strict::
Enable more strict checking, namely to catch a file mode Enable more strict checking, namely to catch a file mode

View File

@ -14,10 +14,9 @@
static int show_root = 0; static int show_root = 0;
static int show_tags = 0; static int show_tags = 0;
static int show_unreachable = 0; static int show_unreachable = 0;
static int standalone = 0;
static int check_full = 0; static int check_full = 0;
static int check_strict = 0; static int check_strict = 0;
static int keep_cache_objects = 0; static int keep_cache_objects = 0;
static unsigned char head_sha1[20]; static unsigned char head_sha1[20];


#ifdef NO_D_INO_IN_DIRENT #ifdef NO_D_INO_IN_DIRENT
@ -68,7 +67,7 @@ static void check_connectivity(void)
continue; continue;


if (!obj->parsed) { if (!obj->parsed) {
if (!standalone && has_sha1_file(obj->sha1)) if (has_sha1_file(obj->sha1))
; /* it is in pack */ ; /* it is in pack */
else else
printf("missing %s %s\n", printf("missing %s %s\n",
@ -82,7 +81,7 @@ static void check_connectivity(void)
for (j = 0; j < refs->count; j++) { for (j = 0; j < refs->count; j++) {
struct object *ref = refs->ref[j]; struct object *ref = refs->ref[j];
if (ref->parsed || if (ref->parsed ||
(!standalone && has_sha1_file(ref->sha1))) (has_sha1_file(ref->sha1)))
continue; continue;
printf("broken link from %7s %s\n", printf("broken link from %7s %s\n",
obj->type, sha1_to_hex(obj->sha1)); obj->type, sha1_to_hex(obj->sha1));
@ -390,7 +389,7 @@ static int fsck_handle_ref(const char *refname, const unsigned char *sha1)


obj = lookup_object(sha1); obj = lookup_object(sha1);
if (!obj) { if (!obj) {
if (!standalone && has_sha1_file(sha1)) { if (has_sha1_file(sha1)) {
default_refs++; default_refs++;
return 0; /* it is in a pack */ return 0; /* it is in a pack */
} }
@ -464,10 +463,6 @@ int main(int argc, char **argv)
keep_cache_objects = 1; keep_cache_objects = 1;
continue; continue;
} }
if (!strcmp(arg, "--standalone")) {
standalone = 1;
continue;
}
if (!strcmp(arg, "--full")) { if (!strcmp(arg, "--full")) {
check_full = 1; check_full = 1;
continue; continue;
@ -477,14 +472,9 @@ int main(int argc, char **argv)
continue; continue;
} }
if (*arg == '-') if (*arg == '-')
usage("git-fsck-objects [--tags] [--root] [[--unreachable] [--cache] [--standalone | --full] [--strict] <head-sha1>*]"); usage("git-fsck-objects [--tags] [--root] [[--unreachable] [--cache] [--full] [--strict] <head-sha1>*]");
} }


if (standalone && check_full)
die("Only one of --standalone or --full can be used.");
if (standalone)
putenv("GIT_ALTERNATE_OBJECT_DIRECTORIES=");

fsck_head_link(); fsck_head_link();
fsck_object_dir(get_object_directory()); fsck_object_dir(get_object_directory());
if (check_full) { if (check_full) {