X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=cache.h;h=1b49f0f4c3c5bef6e9fe6dcf68b117880c1a956a;hb=83b24437c2c6262eeb1e4b36cd9cbb28331c141a;hp=d1bdb56355c99d551929bc851692d67663702d6a;hpb=80bd6f3064a6009cd18a4dab9ce6d29681cec4af;p=git.git diff --git a/cache.h b/cache.h index d1bdb563..1b49f0f4 100644 --- a/cache.h +++ b/cache.h @@ -127,10 +127,12 @@ extern unsigned int active_nr, active_alloc, active_cache_changed; #define DEFAULT_GIT_DIR_ENVIRONMENT ".git" #define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY" #define INDEX_ENVIRONMENT "GIT_INDEX_FILE" +#define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE" extern char *get_object_directory(void); extern char *get_refs_directory(void); extern char *get_index_file(void); +extern char *get_graft_file(void); #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" @@ -172,6 +174,8 @@ extern void rollback_index_file(struct cache_file *); extern char *mkpath(const char *fmt, ...); extern char *git_path(const char *fmt, ...); extern char *sha1_file_name(const unsigned char *sha1); +extern char *sha1_pack_name(const unsigned char *sha1); +extern char *sha1_pack_index_name(const unsigned char *sha1); int safe_create_leading_directories(char *path); @@ -194,12 +198,16 @@ extern int check_sha1_signature(const unsigned char *sha1, void *buf, unsigned l /* Read a tree into the cache */ extern int read_tree(void *buffer, unsigned long size, int stage, const char **paths); -extern int write_sha1_from_fd(const unsigned char *sha1, int fd); +extern int write_sha1_from_fd(const unsigned char *sha1, int fd, char *buffer, + size_t bufsize, size_t *bufposn); extern int write_sha1_to_fd(int fd, const unsigned char *sha1); extern int has_sha1_pack(const unsigned char *sha1); extern int has_sha1_file(const unsigned char *sha1); +extern int has_pack_file(const unsigned char *sha1); +extern int has_pack_index(const unsigned char *sha1); + /* Convert to/from hex/sha1 representation */ extern int get_sha1(const char *str, unsigned char *sha1); extern int get_sha1_hex(const char *hex, unsigned char *sha1); @@ -276,6 +284,7 @@ extern struct packed_git { void *pack_base; unsigned int pack_last_used; unsigned int pack_use_cnt; + unsigned char sha1[20]; char pack_name[0]; /* something like ".git/objects/pack/xxxxx.pack" */ } *packed_git; @@ -298,7 +307,14 @@ extern int path_match(const char *path, int nr, char **match); extern int get_ack(int fd, unsigned char *result_sha1); extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match); +extern struct packed_git *parse_pack_index(unsigned char *sha1); + extern void prepare_packed_git(void); +extern void install_packed_git(struct packed_git *pack); + +extern struct packed_git *find_sha1_pack(const unsigned char *sha1, + struct packed_git *packs); + extern int use_packed_git(struct packed_git *); extern void unuse_packed_git(struct packed_git *); extern struct packed_git *add_packed_git(char *, int);