diff options
Diffstat (limited to 'src/midx.h')
-rw-r--r-- | src/midx.h | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/src/midx.h b/src/midx.h deleted file mode 100644 index 4ce17ce73..000000000 --- a/src/midx.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ - -#ifndef INCLUDE_midx_h__ -#define INCLUDE_midx_h__ - -#include "common.h" - -#include <ctype.h> - -#include "git2/sys/midx.h" - -#include "map.h" -#include "mwindow.h" -#include "odb.h" - -/* - * A multi-pack-index file. - * - * This file contains a merged index for multiple independent .pack files. This - * can help speed up locating objects without requiring a garbage collection - * cycle to create a single .pack file. - * - * Support for this feature was added in git 2.21, and requires the - * `core.multiPackIndex` config option to be set. - */ -typedef struct git_midx_file { - git_map index_map; - - /* The table of Packfile Names. */ - git_vector packfile_names; - - /* The OID Fanout table. */ - const uint32_t *oid_fanout; - /* The total number of objects in the index. */ - uint32_t num_objects; - - /* The OID Lookup table. */ - git_oid *oid_lookup; - - /* The Object Offsets table. Each entry has two 4-byte fields with the pack index and the offset. */ - const unsigned char *object_offsets; - - /* The Object Large Offsets table. */ - const unsigned char *object_large_offsets; - /* The number of entries in the Object Large Offsets table. Each entry has an 8-byte with an offset */ - size_t num_object_large_offsets; - - /* The trailer of the file. Contains the SHA1-checksum of the whole file. */ - git_oid checksum; - - /* something like ".git/objects/pack/multi-pack-index". */ - git_buf filename; -} git_midx_file; - -/* - * An entry in the multi-pack-index file. Similar in purpose to git_pack_entry. - */ -typedef struct git_midx_entry { - /* The index within idx->packfile_names where the packfile name can be found. */ - size_t pack_index; - /* The offset within the .pack file where the requested object is found. */ - off64_t offset; - /* The SHA-1 hash of the requested object. */ - git_oid sha1; -} git_midx_entry; - -/* - * A writer for `multi-pack-index` files. - */ -struct git_midx_writer { - /* - * The path of the directory where the .pack/.idx files are stored. The - * `multi-pack-index` file will be written to the same directory. - */ - git_buf pack_dir; - - /* The list of `git_pack_file`s. */ - git_vector packs; -}; - -int git_midx_open( - git_midx_file **idx_out, - const char *path); -bool git_midx_needs_refresh( - const git_midx_file *idx, - const char *path); -int git_midx_entry_find( - git_midx_entry *e, - git_midx_file *idx, - const git_oid *short_oid, - size_t len); -int git_midx_foreach_entry( - git_midx_file *idx, - git_odb_foreach_cb cb, - void *data); -int git_midx_close(git_midx_file *idx); -void git_midx_free(git_midx_file *idx); - -/* This is exposed for use in the fuzzers. */ -int git_midx_parse( - git_midx_file *idx, - const unsigned char *data, - size_t size); - -#endif |