1#ifndef COMMIT_GRAPH_H 2#define COMMIT_GRAPH_H 3 4#include "git-compat-util.h" 5#include "repository.h" 6 7char *get_commit_graph_filename(const char *obj_dir); 8 9/* 10 * Given a commit struct, try to fill the commit struct info, including: 11 * 1. tree object 12 * 2. date 13 * 3. parents. 14 * 15 * Returns 1 if and only if the commit was found in the packed graph. 16 * 17 * See parse_commit_buffer() for the fallback after this call. 18 */ 19int parse_commit_in_graph(struct commit *item); 20 21/* 22 * It is possible that we loaded commit contents from the commit buffer, 23 * but we also want to ensure the commit-graph content is correctly 24 * checked and filled. Fill the graph_pos and generation members of 25 * the given commit. 26 */ 27void load_commit_graph_info(struct commit *item); 28 29struct tree *get_commit_tree_in_graph(const struct commit *c); 30 31struct commit_graph { 32 int graph_fd; 33 34 const unsigned char *data; 35 size_t data_len; 36 37 unsigned char hash_len; 38 unsigned char num_chunks; 39 uint32_t num_commits; 40 struct object_id oid; 41 42 const uint32_t *chunk_oid_fanout; 43 const unsigned char *chunk_oid_lookup; 44 const unsigned char *chunk_commit_data; 45 const unsigned char *chunk_large_edges; 46}; 47 48struct commit_graph *load_commit_graph_one(const char *graph_file); 49 50void write_commit_graph(const char *obj_dir, 51 const char **pack_indexes, 52 int nr_packs, 53 const char **commit_hex, 54 int nr_commits, 55 int append); 56 57int verify_commit_graph(struct repository *r, struct commit_graph *g); 58 59#endif