git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git-fsck-objects: lacking default references should not be fatal

From
Linus Torvalds <torvalds@osdl.org>
Date
Aug 29, 2006, 18:47 UTC
Message-ID
<Pine.LNX.4.64.0608291141140.27779@g5.osdl.org>

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>
---
diff --git a/fsck-objects.c b/fsck-objects.c
index ae0ec8d..24286de 100644
--- a/fsck-objects.c
+++ b/fsck-objects.c
@@ -425,8 +425,23 @@ static int fsck_handle_ref(const char *r
 static void get_default_heads(void)
 {
 	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)
Message 1 of 1 in “git-fsck-objects: lacking default references should not be fatal”
  1. Linus TorvaldsAug 29, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.