diff --git a/include/git2/types.h b/include/git2/types.h index a4afd18c3..fdccd9646 100644 --- a/include/git2/types.h +++ b/include/git2/types.h @@ -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; /** diff --git a/src/libgit2/indexer.c b/src/libgit2/indexer.c index f1c85cb88..cdd2b2431 100644 --- a/src/libgit2/indexer.c +++ b/src/libgit2/indexer.c @@ -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; } diff --git a/src/libgit2/pack-objects.c b/src/libgit2/pack-objects.c index ced98e8c8..efdd68aea 100644 --- a/src/libgit2/pack-objects.c +++ b/src/libgit2/pack-objects.c @@ -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; diff --git a/src/libgit2/pack.c b/src/libgit2/pack.c index cf63b204e..a70975a75 100644 --- a/src/libgit2/pack.c +++ b/src/libgit2/pack.c @@ -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); diff --git a/src/libgit2/pack.h b/src/libgit2/pack.h index 4fd092149..e802d6074 100644 --- a/src/libgit2/pack.h +++ b/src/libgit2/pack.h @@ -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; diff --git a/tests/libgit2/object/raw/hash.c b/tests/libgit2/object/raw/hash.c index 3bfaddaa2..914096f6a 100644 --- a/tests/libgit2/object/raw/hash.c +++ b/tests/libgit2/object/raw/hash.c @@ -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; diff --git a/tests/libgit2/object/raw/type2string.c b/tests/libgit2/object/raw/type2string.c index 6f0b47603..e3a0764e5 100644 --- a/tests/libgit2/object/raw/type2string.c +++ b/tests/libgit2/object/raw/type2string.c @@ -7,14 +7,14 @@ 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); diff --git a/tests/libgit2/repo/hashfile.c b/tests/libgit2/repo/hashfile.c index f053cb950..64b8dfa46 100644 --- a/tests/libgit2/repo/hashfile.c +++ b/tests/libgit2/repo/hashfile.c @@ -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); }