mirror of
https://github.com/git/git
synced 2024-07-07 19:39:27 +00:00
fsck: tighten error-checks of "git fsck <head>"
Instead of checking reachability from the refs, you can ask fsck to check from a particular set of heads. However, the error checking here is quite lax. In particular: 1. It claims lookup_object() will report an error, which is not true. It only does a hash lookup, and the user has no clue that their argument was skipped. 2. When either the name or sha1 cannot be resolved, we continue to exit with a successful error code, even though we didn't check what the user asked us to. This patch fixes both of these cases. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3e3f8bd608
commit
c6c7b16d23
|
@ -755,9 +755,11 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
||||||
if (!get_sha1(arg, sha1)) {
|
if (!get_sha1(arg, sha1)) {
|
||||||
struct object *obj = lookup_object(sha1);
|
struct object *obj = lookup_object(sha1);
|
||||||
|
|
||||||
/* Error is printed by lookup_object(). */
|
if (!obj) {
|
||||||
if (!obj)
|
error("%s: object missing", sha1_to_hex(sha1));
|
||||||
|
errors_found |= ERROR_OBJECT;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
obj->used = 1;
|
obj->used = 1;
|
||||||
if (name_objects)
|
if (name_objects)
|
||||||
|
@ -768,6 +770,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
error("invalid parameter: expected sha1, got '%s'", arg);
|
error("invalid parameter: expected sha1, got '%s'", arg);
|
||||||
|
errors_found |= ERROR_OBJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -611,4 +611,9 @@ test_expect_success 'fsck notices dangling objects' '
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'fsck $name notices bogus $name' '
|
||||||
|
test_must_fail git fsck bogus &&
|
||||||
|
test_must_fail git fsck $_z40
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue
Block a user