git-fsck-objects: lacking default references should not be fatal
The comment added says it all: if we have lost all references in a git archive, git-fsck-objects should still work, so instead of dying it should just notify the user about that condition. This change was triggered by me just doing a "git-init-db" and then populating that empty git archive with a pack/index file to look at it. Having git-fsck-objects not work just because I didn't have any references handy was rather irritating, since part of the reason for running git-fsck-objects in the first place was to _find_ the missing references. However, "--unreachable" really doesn't make sense in that situation, and we want to turn it off to protect anybody who uses the old "git prune" shell-script (rather than the modern built-in). The old pruning script used to remove all objects that were reported as unreachable, and without any refs, that obviously means everything - not worth it. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
9e84801396
commit
071fa89e25
@ -425,8 +425,23 @@ static int fsck_handle_ref(const char *refname, const unsigned char *sha1)
|
|||||||
static void get_default_heads(void)
|
static void get_default_heads(void)
|
||||||
{
|
{
|
||||||
for_each_ref(fsck_handle_ref);
|
for_each_ref(fsck_handle_ref);
|
||||||
if (!default_refs)
|
|
||||||
die("No default references");
|
/*
|
||||||
|
* Not having any default heads isn't really fatal, but
|
||||||
|
* it does mean that "--unreachable" no longer makes any
|
||||||
|
* sense (since in this case everything will obviously
|
||||||
|
* be unreachable by definition.
|
||||||
|
*
|
||||||
|
* Showing dangling objects is valid, though (as those
|
||||||
|
* dangling objects are likely lost heads).
|
||||||
|
*
|
||||||
|
* So we just print a warning about it, and clear the
|
||||||
|
* "show_unreachable" flag.
|
||||||
|
*/
|
||||||
|
if (!default_refs) {
|
||||||
|
error("No default references");
|
||||||
|
show_unreachable = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fsck_object_dir(const char *path)
|
static void fsck_object_dir(const char *path)
|
||||||
|
Loading…
Reference in New Issue
Block a user