Code

Merge branch 'sb/fetch'
[git.git] / fsck-objects.c
index ae0ec8d039cfce698daa8a9f44c7f49b932373c8..4d994f3fc83d71501bbfde5159a869b4f2a38e99 100644 (file)
@@ -425,8 +425,23 @@ static int fsck_handle_ref(const char *refname, const unsigned char *sha1)
 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)
@@ -443,7 +458,7 @@ static void fsck_object_dir(const char *path)
 static int fsck_head_link(void)
 {
        unsigned char sha1[20];
-       const char *git_HEAD = strdup(git_path("HEAD"));
+       const char *git_HEAD = xstrdup(git_path("HEAD"));
        const char *git_refs_heads_master = resolve_ref(git_HEAD, sha1, 1);
        int pfxlen = strlen(git_HEAD) - 4; /* strip .../.git/ part */