commit-graph: create options for split files

The split commit-graph feature is now fully implemented, but needs
some more run-time configurability. Allow direct callers to 'git
commit-graph write --split' to specify the values used in the
merge strategy and the expire time.

Update the documentation to specify these values.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Derrick Stolee
2019-06-18 11:14:32 -07:00
committed by Junio C Hamano
parent 8d84097f96
commit c2bc6e6ab0
8 changed files with 128 additions and 24 deletions

View File

@ -75,17 +75,25 @@ int generation_numbers_enabled(struct repository *r);
#define COMMIT_GRAPH_PROGRESS (1 << 1)
#define COMMIT_GRAPH_SPLIT (1 << 2)
struct split_commit_graph_opts {
int size_multiple;
int max_commits;
timestamp_t expire_time;
};
/*
* The write_commit_graph* methods return zero on success
* and a negative value on failure. Note that if the repository
* is not compatible with the commit-graph feature, then the
* methods will return 0 without writing a commit-graph.
*/
int write_commit_graph_reachable(const char *obj_dir, unsigned int flags);
int write_commit_graph_reachable(const char *obj_dir, unsigned int flags,
const struct split_commit_graph_opts *split_opts);
int write_commit_graph(const char *obj_dir,
struct string_list *pack_indexes,
struct string_list *commit_hex,
unsigned int flags);
unsigned int flags,
const struct split_commit_graph_opts *split_opts);
int verify_commit_graph(struct repository *r, struct commit_graph *g);