@@ -76,9 +76,7 @@ typedef enum {
GIT_OBJECT_COMMIT = 1, /**< A commit object. */
GIT_OBJECT_TREE = 2, /**< A tree (directory listing) object. */
GIT_OBJECT_BLOB = 3, /**< A file revision object. */
- GIT_OBJECT_TAG = 4, /**< An annotated tag object. */
- GIT_OBJECT_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
- GIT_OBJECT_REF_DELTA = 7 /**< A delta, base is given by object id. */
+ GIT_OBJECT_TAG = 4 /**< An annotated tag object. */
} git_object_t;
/**
@@ -319,9 +319,9 @@ static int advance_delta_offset(git_indexer *idx, git_object_t type)
{
git_mwindow *w = NULL;
- GIT_ASSERT_ARG(type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA);
+ GIT_ASSERT_ARG(type == GIT_PACKFILE_REF_DELTA || type == GIT_PACKFILE_OFS_DELTA);
- if (type == GIT_OBJECT_REF_DELTA) {
+ if (type == GIT_PACKFILE_REF_DELTA) {
idx->off += git_oid_size(idx->oid_type);
} else {
off64_t base_off;
@@ -813,7 +813,7 @@ static int read_stream_object(git_indexer *idx, git_indexer_progress *stats)
git_hash_init(&idx->hash_ctx);
git_str_clear(&idx->entry_data);
- if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) {
+ if (type == GIT_PACKFILE_REF_DELTA || type == GIT_PACKFILE_OFS_DELTA) {
error = advance_delta_offset(idx, type);
if (error == GIT_EBUFS) {
idx->off = entry_start;
@@ -1094,7 +1094,7 @@ static int fix_thin_pack(git_indexer *idx, git_indexer_progress *stats)
if (error < 0)
return error;
- if (type == GIT_OBJECT_REF_DELTA) {
+ if (type == GIT_PACKFILE_REF_DELTA) {
found_ref_delta = 1;
break;
}
@@ -338,7 +338,7 @@ static int write_object(
goto done;
data_len = po->delta_size;
- type = GIT_OBJECT_REF_DELTA;
+ type = GIT_PACKFILE_REF_DELTA;
} else {
if ((error = git_odb_read(&obj, pb->odb, &po->id)) < 0)
goto done;
@@ -354,7 +354,7 @@ static int write_object(
(error = git_hash_update(&pb->ctx, hdr, hdr_len)) < 0)
goto done;
- if (type == GIT_OBJECT_REF_DELTA) {
+ if (type == GIT_PACKFILE_REF_DELTA) {
if ((error = write_cb(po->delta->id.id, oid_size, cb_data)) < 0 ||
(error = git_hash_update(&pb->ctx, po->delta->id.id, oid_size)) < 0)
goto done;
@@ -390,7 +390,7 @@ int git_packfile__object_header(size_t *out, unsigned char *hdr, size_t size, gi
unsigned char *hdr_base;
unsigned char c;
- GIT_ASSERT_ARG(type >= GIT_OBJECT_COMMIT && type <= GIT_OBJECT_REF_DELTA);
+ GIT_ASSERT_ARG(type >= GIT_OBJECT_COMMIT && type <= GIT_PACKFILE_REF_DELTA);
/* TODO: add support for chunked objects; see git.git 6c0d19b1 */
@@ -532,7 +532,7 @@ int git_packfile_resolve_header(
if (error < 0)
return error;
- if (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) {
+ if (type == GIT_PACKFILE_OFS_DELTA || type == GIT_PACKFILE_REF_DELTA) {
size_t base_size;
git_packfile_stream stream;
@@ -553,12 +553,12 @@ int git_packfile_resolve_header(
base_offset = 0;
}
- while (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) {
+ while (type == GIT_PACKFILE_OFS_DELTA || type == GIT_PACKFILE_REF_DELTA) {
curpos = base_offset;
error = git_packfile_unpack_header(&size, &type, p, &w_curs, &curpos);
if (error < 0)
return error;
- if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA)
+ if (type != GIT_PACKFILE_OFS_DELTA && type != GIT_PACKFILE_REF_DELTA)
break;
error = get_delta_base(&base_offset, p, &w_curs, &curpos, type, base_offset);
@@ -635,7 +635,7 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
elem->type = type;
elem->base_key = obj_offset;
- if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA)
+ if (type != GIT_PACKFILE_OFS_DELTA && type != GIT_PACKFILE_REF_DELTA)
break;
error = get_delta_base(&base_offset, p, &w_curs, &curpos, type, obj_offset);
@@ -675,7 +675,7 @@ int git_packfile_unpack(
git_pack_cache_entry *cached = NULL;
struct pack_chain_elem small_stack[SMALL_STACK_SIZE];
size_t stack_size = 0, elem_pos, alloclen;
- git_object_t base_type;
+ int base_type;
error = git_mutex_lock(&p->lock);
if (error < 0) {
@@ -735,8 +735,8 @@ int git_packfile_unpack(
if (error < 0)
goto cleanup;
break;
- case GIT_OBJECT_OFS_DELTA:
- case GIT_OBJECT_REF_DELTA:
+ case GIT_PACKFILE_OFS_DELTA:
+ case GIT_PACKFILE_REF_DELTA:
error = packfile_error("dependency chain ends in a delta");
goto cleanup;
default:
@@ -983,7 +983,7 @@ int get_delta_base(
* than the hash size is stupid, as then a REF_DELTA would be
* smaller to store.
*/
- if (type == GIT_OBJECT_OFS_DELTA) {
+ if (type == GIT_PACKFILE_OFS_DELTA) {
unsigned used = 0;
unsigned char c = base_info[used++];
size_t unsigned_base_offset = c & 127;
@@ -1000,7 +1000,7 @@ int get_delta_base(
return packfile_error("out of bounds");
base_offset = delta_obj_offset - unsigned_base_offset;
*curpos += used;
- } else if (type == GIT_OBJECT_REF_DELTA) {
+ } else if (type == GIT_PACKFILE_REF_DELTA) {
git_oid base_oid;
git_oid_from_raw(&base_oid, base_info, p->oid_type);
@@ -33,6 +33,10 @@ typedef int git_pack_foreach_entry_offset_cb(
#define PACK_SIGNATURE 0x5041434b /* "PACK" */
#define PACK_VERSION 2
#define pack_version_ok(v) ((v) == htonl(2))
+
+#define GIT_PACKFILE_OFS_DELTA 6
+#define GIT_PACKFILE_REF_DELTA 7
+
struct git_pack_header {
uint32_t hdr_signature;
uint32_t hdr_version;
@@ -87,16 +87,16 @@ void test_object_raw_hash__hash_junk_data(void)
junk_obj.data = some_data;
hash_object_fail(&id, &junk_obj);
- junk_obj.type = 0; /* EXT1 */
+ junk_obj.type = 0; /* unused */
hash_object_fail(&id, &junk_obj);
- junk_obj.type = 5; /* EXT2 */
+ junk_obj.type = 5; /* unused */
hash_object_fail(&id, &junk_obj);
- junk_obj.type = GIT_OBJECT_OFS_DELTA;
+ junk_obj.type = 6; /* packfile offset delta */
hash_object_fail(&id, &junk_obj);
- junk_obj.type = GIT_OBJECT_REF_DELTA;
+ junk_obj.type = 7; /* packfile ref delta */
hash_object_fail(&id, &junk_obj);
junk_obj.type = 42;
void test_object_raw_type2string__convert_type_to_string(void)
{
cl_assert_equal_s(git_object_type2string(GIT_OBJECT_INVALID), "");
- cl_assert_equal_s(git_object_type2string(0), ""); /* EXT1 */
+ cl_assert_equal_s(git_object_type2string(0), ""); /* unused */
cl_assert_equal_s(git_object_type2string(GIT_OBJECT_COMMIT), "commit");
cl_assert_equal_s(git_object_type2string(GIT_OBJECT_TREE), "tree");
cl_assert_equal_s(git_object_type2string(GIT_OBJECT_BLOB), "blob");
cl_assert_equal_s(git_object_type2string(GIT_OBJECT_TAG), "tag");
- cl_assert_equal_s(git_object_type2string(5), ""); /* EXT2 */
- cl_assert_equal_s(git_object_type2string(GIT_OBJECT_OFS_DELTA), "OFS_DELTA");
- cl_assert_equal_s(git_object_type2string(GIT_OBJECT_REF_DELTA), "REF_DELTA");
+ cl_assert_equal_s(git_object_type2string(5), ""); /* unused */
+ cl_assert_equal_s(git_object_type2string(6), ""); /* packfile offset delta */
+ cl_assert_equal_s(git_object_type2string(7), ""); /* packfile ref delta */
cl_assert_equal_s(git_object_type2string(-2), "");
cl_assert_equal_s(git_object_type2string(8), "");
@@ -29,8 +29,8 @@ void test_object_raw_type2string__convert_string_to_type(void)
cl_assert(git_object_string2type("tree") == GIT_OBJECT_TREE);
cl_assert(git_object_string2type("blob") == GIT_OBJECT_BLOB);
cl_assert(git_object_string2type("tag") == GIT_OBJECT_TAG);
- cl_assert(git_object_string2type("OFS_DELTA") == GIT_OBJECT_OFS_DELTA);
- cl_assert(git_object_string2type("REF_DELTA") == GIT_OBJECT_REF_DELTA);
+ cl_assert(git_object_string2type("OFS_DELTA") == GIT_OBJECT_INVALID);
+ cl_assert(git_object_string2type("REF_DELTA") == GIT_OBJECT_INVALID);
cl_assert(git_object_string2type("CoMmIt") == GIT_OBJECT_INVALID);
cl_assert(git_object_string2type("hohoho") == GIT_OBJECT_INVALID);
@@ -39,14 +39,14 @@ void test_object_raw_type2string__convert_string_to_type(void)
void test_object_raw_type2string__check_type_is_valid(void)
{
cl_assert(git_object_type_is_valid(GIT_OBJECT_INVALID) == 0);
- cl_assert(git_object_type_is_valid(0) == 0); /* EXT1 */
+ cl_assert(git_object_type_is_valid(0) == 0); /* unused */
cl_assert(git_object_type_is_valid(GIT_OBJECT_COMMIT) == 1);
cl_assert(git_object_type_is_valid(GIT_OBJECT_TREE) == 1);
cl_assert(git_object_type_is_valid(GIT_OBJECT_BLOB) == 1);
cl_assert(git_object_type_is_valid(GIT_OBJECT_TAG) == 1);
- cl_assert(git_object_type_is_valid(5) == 0); /* EXT2 */
- cl_assert(git_object_type_is_valid(GIT_OBJECT_OFS_DELTA) == 0);
- cl_assert(git_object_type_is_valid(GIT_OBJECT_REF_DELTA) == 0);
+ cl_assert(git_object_type_is_valid(5) == 0); /* unused */
+ cl_assert(git_object_type_is_valid(6) == 0); /* packfile offset delta */
+ cl_assert(git_object_type_is_valid(7) == 0); /* packfile ref delta */
cl_assert(git_object_type_is_valid(-2) == 0);
cl_assert(git_object_type_is_valid(8) == 0);
@@ -34,7 +34,7 @@ void test_repo_hashfile__simple(void)
/* hash with invalid type */
cl_git_fail(git_odb__hashfile(&a, full.ptr, GIT_OBJECT_ANY, GIT_OID_SHA1));
- cl_git_fail(git_repository_hashfile(&b, _repo, full.ptr, GIT_OBJECT_OFS_DELTA, NULL));
+ cl_git_fail(git_repository_hashfile(&b, _repo, full.ptr, 6, NULL));
git_str_dispose(&full);
}