commit-graph: stop using the_hash_algo
Stop using `the_hash_algo` as it implicitly relies on `the_repository`. Instead, we either use the hash algo provided via the context or, if there is no such hash algo, we use `the_repository` explicitly. Such uses will be removed in subsequent commits. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f1141b4391
commit
89cc9b9adf
@@ -109,7 +109,8 @@ static int graph_verify(int argc, const char **argv, const char *prefix,
|
|||||||
opened = OPENED_GRAPH;
|
opened = OPENED_GRAPH;
|
||||||
else if (errno != ENOENT)
|
else if (errno != ENOENT)
|
||||||
die_errno(_("Could not open commit-graph '%s'"), graph_name);
|
die_errno(_("Could not open commit-graph '%s'"), graph_name);
|
||||||
else if (open_commit_graph_chain(chain_name, &fd, &st))
|
else if (open_commit_graph_chain(chain_name, &fd, &st,
|
||||||
|
the_repository->hash_algo))
|
||||||
opened = OPENED_CHAIN;
|
opened = OPENED_CHAIN;
|
||||||
else if (errno != ENOENT)
|
else if (errno != ENOENT)
|
||||||
die_errno(_("could not open commit-graph chain '%s'"), chain_name);
|
die_errno(_("could not open commit-graph chain '%s'"), chain_name);
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ struct commit_graph *load_commit_graph_one_fd_st(struct repository *r,
|
|||||||
|
|
||||||
graph_size = xsize_t(st->st_size);
|
graph_size = xsize_t(st->st_size);
|
||||||
|
|
||||||
if (graph_size < graph_min_size(the_hash_algo)) {
|
if (graph_size < graph_min_size(r->hash_algo)) {
|
||||||
close(fd);
|
close(fd);
|
||||||
error(_("commit-graph file is too small"));
|
error(_("commit-graph file is too small"));
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -320,7 +320,7 @@ static int graph_read_commit_data(const unsigned char *chunk_start,
|
|||||||
size_t chunk_size, void *data)
|
size_t chunk_size, void *data)
|
||||||
{
|
{
|
||||||
struct commit_graph *g = data;
|
struct commit_graph *g = data;
|
||||||
if (chunk_size / graph_data_width(the_hash_algo) != g->num_commits)
|
if (chunk_size / graph_data_width(g->hash_algo) != g->num_commits)
|
||||||
return error(_("commit-graph commit data chunk is wrong size"));
|
return error(_("commit-graph commit data chunk is wrong size"));
|
||||||
g->chunk_commit_data = chunk_start;
|
g->chunk_commit_data = chunk_start;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -621,7 +621,8 @@ static int add_graph_to_chain(struct commit_graph *g,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int open_commit_graph_chain(const char *chain_file,
|
int open_commit_graph_chain(const char *chain_file,
|
||||||
int *fd, struct stat *st)
|
int *fd, struct stat *st,
|
||||||
|
const struct git_hash_algo *hash_algo)
|
||||||
{
|
{
|
||||||
*fd = git_open(chain_file);
|
*fd = git_open(chain_file);
|
||||||
if (*fd < 0)
|
if (*fd < 0)
|
||||||
@@ -630,7 +631,7 @@ int open_commit_graph_chain(const char *chain_file,
|
|||||||
close(*fd);
|
close(*fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (st->st_size < the_hash_algo->hexsz) {
|
if (st->st_size < hash_algo->hexsz) {
|
||||||
close(*fd);
|
close(*fd);
|
||||||
if (!st->st_size) {
|
if (!st->st_size) {
|
||||||
/* treat empty files the same as missing */
|
/* treat empty files the same as missing */
|
||||||
@@ -654,7 +655,7 @@ struct commit_graph *load_commit_graph_chain_fd_st(struct repository *r,
|
|||||||
int i = 0, valid = 1, count;
|
int i = 0, valid = 1, count;
|
||||||
FILE *fp = xfdopen(fd, "r");
|
FILE *fp = xfdopen(fd, "r");
|
||||||
|
|
||||||
count = st->st_size / (the_hash_algo->hexsz + 1);
|
count = st->st_size / (r->hash_algo->hexsz + 1);
|
||||||
CALLOC_ARRAY(oids, count);
|
CALLOC_ARRAY(oids, count);
|
||||||
|
|
||||||
odb_prepare_alternates(r->objects);
|
odb_prepare_alternates(r->objects);
|
||||||
@@ -716,7 +717,7 @@ static struct commit_graph *load_commit_graph_chain(struct repository *r,
|
|||||||
int fd;
|
int fd;
|
||||||
struct commit_graph *g = NULL;
|
struct commit_graph *g = NULL;
|
||||||
|
|
||||||
if (open_commit_graph_chain(chain_file, &fd, &st)) {
|
if (open_commit_graph_chain(chain_file, &fd, &st, r->hash_algo)) {
|
||||||
int incomplete;
|
int incomplete;
|
||||||
/* ownership of fd is taken over by load function */
|
/* ownership of fd is taken over by load function */
|
||||||
g = load_commit_graph_chain_fd_st(r, fd, &st, &incomplete);
|
g = load_commit_graph_chain_fd_st(r, fd, &st, &incomplete);
|
||||||
@@ -908,7 +909,7 @@ static void fill_commit_graph_info(struct commit *item, struct commit_graph *g,
|
|||||||
die(_("invalid commit position. commit-graph is likely corrupt"));
|
die(_("invalid commit position. commit-graph is likely corrupt"));
|
||||||
|
|
||||||
lex_index = pos - g->num_commits_in_base;
|
lex_index = pos - g->num_commits_in_base;
|
||||||
commit_data = g->chunk_commit_data + st_mult(graph_data_width(the_hash_algo), lex_index);
|
commit_data = g->chunk_commit_data + st_mult(graph_data_width(g->hash_algo), lex_index);
|
||||||
|
|
||||||
graph_data = commit_graph_data_at(item);
|
graph_data = commit_graph_data_at(item);
|
||||||
graph_data->graph_pos = pos;
|
graph_data->graph_pos = pos;
|
||||||
@@ -1112,7 +1113,7 @@ static struct tree *load_tree_for_commit(struct repository *r,
|
|||||||
g = g->base_graph;
|
g = g->base_graph;
|
||||||
|
|
||||||
commit_data = g->chunk_commit_data +
|
commit_data = g->chunk_commit_data +
|
||||||
st_mult(graph_data_width(the_hash_algo),
|
st_mult(graph_data_width(g->hash_algo),
|
||||||
graph_pos - g->num_commits_in_base);
|
graph_pos - g->num_commits_in_base);
|
||||||
|
|
||||||
oidread(&oid, commit_data, the_repository->hash_algo);
|
oidread(&oid, commit_data, the_repository->hash_algo);
|
||||||
@@ -1221,7 +1222,7 @@ static int write_graph_chunk_oids(struct hashfile *f,
|
|||||||
int count;
|
int count;
|
||||||
for (count = 0; count < ctx->commits.nr; count++, list++) {
|
for (count = 0; count < ctx->commits.nr; count++, list++) {
|
||||||
display_progress(ctx->progress, ++ctx->progress_cnt);
|
display_progress(ctx->progress, ++ctx->progress_cnt);
|
||||||
hashwrite(f, (*list)->object.oid.hash, the_hash_algo->rawsz);
|
hashwrite(f, (*list)->object.oid.hash, f->algop->rawsz);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1252,7 +1253,7 @@ static int write_graph_chunk_data(struct hashfile *f,
|
|||||||
die(_("unable to parse commit %s"),
|
die(_("unable to parse commit %s"),
|
||||||
oid_to_hex(&(*list)->object.oid));
|
oid_to_hex(&(*list)->object.oid));
|
||||||
tree = get_commit_tree_oid(*list);
|
tree = get_commit_tree_oid(*list);
|
||||||
hashwrite(f, tree->hash, the_hash_algo->rawsz);
|
hashwrite(f, tree->hash, ctx->r->hash_algo->rawsz);
|
||||||
|
|
||||||
parent = (*list)->parents;
|
parent = (*list)->parents;
|
||||||
|
|
||||||
@@ -2035,7 +2036,7 @@ static int write_graph_chunk_base_1(struct hashfile *f,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
num = write_graph_chunk_base_1(f, g->base_graph);
|
num = write_graph_chunk_base_1(f, g->base_graph);
|
||||||
hashwrite(f, g->oid.hash, the_hash_algo->rawsz);
|
hashwrite(f, g->oid.hash, g->hash_algo->rawsz);
|
||||||
return num + 1;
|
return num + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2059,7 +2060,7 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
|
|||||||
struct hashfile *f;
|
struct hashfile *f;
|
||||||
struct tempfile *graph_layer; /* when ctx->split is non-zero */
|
struct tempfile *graph_layer; /* when ctx->split is non-zero */
|
||||||
struct lock_file lk = LOCK_INIT;
|
struct lock_file lk = LOCK_INIT;
|
||||||
const unsigned hashsz = the_hash_algo->rawsz;
|
const unsigned hashsz = ctx->r->hash_algo->rawsz;
|
||||||
struct strbuf progress_title = STRBUF_INIT;
|
struct strbuf progress_title = STRBUF_INIT;
|
||||||
struct chunkfile *cf;
|
struct chunkfile *cf;
|
||||||
unsigned char file_hash[GIT_MAX_RAWSZ];
|
unsigned char file_hash[GIT_MAX_RAWSZ];
|
||||||
@@ -2147,7 +2148,7 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
|
|||||||
hashwrite_be32(f, GRAPH_SIGNATURE);
|
hashwrite_be32(f, GRAPH_SIGNATURE);
|
||||||
|
|
||||||
hashwrite_u8(f, GRAPH_VERSION);
|
hashwrite_u8(f, GRAPH_VERSION);
|
||||||
hashwrite_u8(f, oid_version(the_hash_algo));
|
hashwrite_u8(f, oid_version(ctx->r->hash_algo));
|
||||||
hashwrite_u8(f, get_num_chunks(cf));
|
hashwrite_u8(f, get_num_chunks(cf));
|
||||||
hashwrite_u8(f, ctx->num_commit_graphs_after - 1);
|
hashwrite_u8(f, ctx->num_commit_graphs_after - 1);
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ struct string_list;
|
|||||||
char *get_commit_graph_filename(struct odb_source *source);
|
char *get_commit_graph_filename(struct odb_source *source);
|
||||||
char *get_commit_graph_chain_filename(struct odb_source *source);
|
char *get_commit_graph_chain_filename(struct odb_source *source);
|
||||||
int open_commit_graph(const char *graph_file, int *fd, struct stat *st);
|
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 open_commit_graph_chain(const char *chain_file, int *fd, struct stat *st,
|
||||||
|
const struct git_hash_algo *hash_algo);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Given a commit struct, try to fill the commit struct info, including:
|
* Given a commit struct, try to fill the commit struct info, including:
|
||||||
|
|||||||
Reference in New Issue
Block a user