commit-graph.hon commit commit-graph: test for corrupted octopus edge (437787a)
   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