#include "delta.h"
#include "pack.h"
#include "csum-file.h"
+#include "blob.h"
+#include "commit.h"
+#include "tag.h"
+#include "tree.h"
static const char index_pack_usage[] =
"git-index-pack [-o index-file] pack-file";
hdr = (void *)pack_base;
if (hdr->hdr_signature != htonl(PACK_SIGNATURE))
die("packfile '%s' signature mismatch", pack_name);
- if (hdr->hdr_version != htonl(PACK_VERSION))
- die("packfile '%s' version %d different from ours %d",
- pack_name, ntohl(hdr->hdr_version), PACK_VERSION);
+ if (!pack_version_ok(hdr->hdr_version))
+ die("packfile '%s' version %d unsupported",
+ pack_name, ntohl(hdr->hdr_version));
nr_objects = ntohl(hdr->hdr_entries);
const char *type_str;
switch (type) {
- case OBJ_COMMIT: type_str = "commit"; break;
- case OBJ_TREE: type_str = "tree"; break;
- case OBJ_BLOB: type_str = "blob"; break;
- case OBJ_TAG: type_str = "tag"; break;
+ case OBJ_COMMIT: type_str = commit_type; break;
+ case OBJ_TREE: type_str = tree_type; break;
+ case OBJ_BLOB: type_str = blob_type; break;
+ case OBJ_TAG: type_str = tag_type; break;
default:
die("bad type %d", type);
}
usage(index_pack_usage);
if (!index_name) {
int len = strlen(pack_name);
- if (len < 5 || strcmp(pack_name + len - 5, ".pack"))
+ if (!has_extension(pack_name, ".pack"))
die("packfile name '%s' does not end with '.pack'",
pack_name);
index_name_buf = xmalloc(len);