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