Don't assume tree entries that are not dirs are blobs

When scanning the trees in track_tree_refs() there is a "lazy" test
that assumes that entries are either directories or files.  Don't do
that.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/object.c b/object.c
index cfc4969..16793d9 100644
--- a/object.c
+++ b/object.c
@@ -160,8 +160,11 @@
 		parse_tag_buffer(tag, buffer, size);
 		obj = &tag->object;
 	} else {
+		warning("object %s has unknown type id %d\n", sha1_to_hex(sha1), type);
 		obj = NULL;
 	}
+	if (obj && obj->type == OBJ_NONE)
+		obj->type = type;
 	*eaten_p = eaten;
 	return obj;
 }