Merge branch 'ew/apply'
[gitweb.git] / unpack-objects.c
index 4b5b5cb3e22454fe487002f698272a19a1d8861d..48c1ee7968cc6b40cb02cd99d35e66630f922041 100644 (file)
@@ -2,6 +2,10 @@
 #include "object.h"
 #include "delta.h"
 #include "pack.h"
+#include "blob.h"
+#include "commit.h"
+#include "tag.h"
+#include "tree.h"
 
 #include <sys/time.h>
 
@@ -148,10 +152,10 @@ static int unpack_non_delta_entry(enum object_type kind, unsigned long size)
        const char *type;
 
        switch (kind) {
-       case OBJ_COMMIT: type = "commit"; break;
-       case OBJ_TREE:   type = "tree"; break;
-       case OBJ_BLOB:   type = "blob"; break;
-       case OBJ_TAG:    type = "tag"; break;
+       case OBJ_COMMIT: type = commit_type; break;
+       case OBJ_TREE:   type = tree_type; break;
+       case OBJ_BLOB:   type = blob_type; break;
+       case OBJ_TAG:    type = tag_type; break;
        default: die("bad type %d", kind);
        }
        if (!dry_run)
@@ -237,22 +241,16 @@ static void unpack_one(unsigned nr, unsigned total)
        }
 }
 
-/*
- * We unpack from the end, older files first. Now, usually
- * there are deltas etc, so we'll not actually write the
- * objects in that order, but we might as well try..
- */
 static void unpack_all(void)
 {
        int i;
        struct pack_header *hdr = fill(sizeof(struct pack_header));
-       unsigned version = ntohl(hdr->hdr_version);
        unsigned nr_objects = ntohl(hdr->hdr_entries);
 
        if (ntohl(hdr->hdr_signature) != PACK_SIGNATURE)
                die("bad pack file");
-       if (version != PACK_VERSION)
-               die("unable to handle pack file version %d", version);
+       if (!pack_version_ok(hdr->hdr_version))
+               die("unknown pack file version %d", ntohl(hdr->hdr_version));
        fprintf(stderr, "Unpacking %d objects\n", nr_objects);
 
        use(sizeof(struct pack_header));