#ifndef COMMIT_GRAPH_H
#define COMMIT_GRAPH_H
#include "object-store-ll.h"
#include "oidset.h"
#define GIT_TEST_COMMIT_GRAPH …
#define GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE …
#define GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS …
#define GIT_COMMIT_GRAPH_PARANOIA …
void git_test_write_commit_graph_or_die(void);
struct commit;
struct bloom_filter_settings;
struct repository;
struct raw_object_store;
struct string_list;
char *get_commit_graph_filename(struct object_directory *odb);
char *get_commit_graph_chain_filename(struct object_directory *odb);
int open_commit_graph(const char *graph_file, int *fd, struct stat *st);
int open_commit_graph_chain(const char *chain_file, int *fd, struct stat *st);
int parse_commit_in_graph(struct repository *r, struct commit *item);
int repo_find_commit_pos_in_graph(struct repository *r, struct commit *c,
uint32_t *pos);
struct commit *lookup_commit_in_graph(struct repository *repo, const struct object_id *id);
void load_commit_graph_info(struct repository *r, struct commit *item);
struct tree *get_commit_tree_in_graph(struct repository *r,
const struct commit *c);
struct commit_graph { … };
struct commit_graph *load_commit_graph_one_fd_st(struct repository *r,
int fd, struct stat *st,
struct object_directory *odb);
struct commit_graph *load_commit_graph_chain_fd_st(struct repository *r,
int fd, struct stat *st,
int *incomplete_chain);
struct commit_graph *read_commit_graph_one(struct repository *r,
struct object_directory *odb);
struct repo_settings;
struct commit_graph *parse_commit_graph(struct repo_settings *s,
void *graph_map, size_t graph_size);
int generation_numbers_enabled(struct repository *r);
int corrected_commit_dates_enabled(struct repository *r);
struct bloom_filter_settings *get_bloom_filter_settings(struct repository *r);
enum commit_graph_write_flags { … };
enum commit_graph_split_flags { … };
struct commit_graph_opts { … };
int write_commit_graph_reachable(struct object_directory *odb,
enum commit_graph_write_flags flags,
const struct commit_graph_opts *opts);
int write_commit_graph(struct object_directory *odb,
const struct string_list *pack_indexes,
struct oidset *commits,
enum commit_graph_write_flags flags,
const struct commit_graph_opts *opts);
#define COMMIT_GRAPH_VERIFY_SHALLOW …
int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags);
void close_commit_graph(struct raw_object_store *);
void free_commit_graph(struct commit_graph *);
void disable_commit_graph(struct repository *r);
struct commit_graph_data { … };
timestamp_t commit_graph_generation(const struct commit *);
uint32_t commit_graph_position(const struct commit *);
void ensure_generations_valid(struct repository *r,
struct commit **commits, size_t nr);
#endif