mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
odb: allow odb_find_source() to fail
When trying to locate a source for an unknown object directory we will die right away. In subsequent patches we will add new callsites though that want to handle this situation gracefully instead. Refactor the function to return a `NULL` pointer if the source could not be found and adapt the callsites to die instead. Introduce a new wrapper `odb_find_source_or_die()` that continues to die in case the source could not be found. 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
595bef7180
commit
0d61933b8f
@@ -101,7 +101,7 @@ static int graph_verify(int argc, const char **argv, const char *prefix,
|
|||||||
if (opts.progress)
|
if (opts.progress)
|
||||||
flags |= COMMIT_GRAPH_WRITE_PROGRESS;
|
flags |= COMMIT_GRAPH_WRITE_PROGRESS;
|
||||||
|
|
||||||
source = odb_find_source(the_repository->objects, opts.obj_dir);
|
source = odb_find_source_or_die(the_repository->objects, opts.obj_dir);
|
||||||
graph_name = get_commit_graph_filename(source);
|
graph_name = get_commit_graph_filename(source);
|
||||||
chain_name = get_commit_graph_chain_filename(source);
|
chain_name = get_commit_graph_chain_filename(source);
|
||||||
if (open_commit_graph(graph_name, &fd, &st))
|
if (open_commit_graph(graph_name, &fd, &st))
|
||||||
@@ -289,7 +289,7 @@ static int graph_write(int argc, const char **argv, const char *prefix,
|
|||||||
git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0))
|
git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0))
|
||||||
flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS;
|
flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS;
|
||||||
|
|
||||||
source = odb_find_source(the_repository->objects, opts.obj_dir);
|
source = odb_find_source_or_die(the_repository->objects, opts.obj_dir);
|
||||||
|
|
||||||
if (opts.reachable) {
|
if (opts.reachable) {
|
||||||
if (write_commit_graph_reachable(source, flags, &write_opts))
|
if (write_commit_graph_reachable(source, flags, &write_opts))
|
||||||
|
|||||||
@@ -916,7 +916,7 @@ cleanup:
|
|||||||
static struct multi_pack_index *lookup_multi_pack_index(struct repository *r,
|
static struct multi_pack_index *lookup_multi_pack_index(struct repository *r,
|
||||||
const char *object_dir)
|
const char *object_dir)
|
||||||
{
|
{
|
||||||
struct odb_source *source = odb_find_source(r->objects, object_dir);
|
struct odb_source *source = odb_find_source_or_die(r->objects, object_dir);
|
||||||
return get_multi_pack_index(source);
|
return get_multi_pack_index(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
odb.c
6
odb.c
@@ -464,6 +464,12 @@ struct odb_source *odb_find_source(struct object_database *odb, const char *obj_
|
|||||||
free(obj_dir_real);
|
free(obj_dir_real);
|
||||||
strbuf_release(&odb_path_real);
|
strbuf_release(&odb_path_real);
|
||||||
|
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct odb_source *odb_find_source_or_die(struct object_database *odb, const char *obj_dir)
|
||||||
|
{
|
||||||
|
struct odb_source *source = odb_find_source(odb, obj_dir);
|
||||||
if (!source)
|
if (!source)
|
||||||
die(_("could not find object directory matching %s"), obj_dir);
|
die(_("could not find object directory matching %s"), obj_dir);
|
||||||
return source;
|
return source;
|
||||||
|
|||||||
7
odb.h
7
odb.h
@@ -186,11 +186,14 @@ struct object_database *odb_new(struct repository *repo);
|
|||||||
void odb_clear(struct object_database *o);
|
void odb_clear(struct object_database *o);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find source by its object directory path. Dies in case the source couldn't
|
* Find source by its object directory path. Returns a `NULL` pointer in case
|
||||||
* be found.
|
* the source could not be found.
|
||||||
*/
|
*/
|
||||||
struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
|
struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
|
||||||
|
|
||||||
|
/* Same as `odb_find_source()`, but dies in case the source doesn't exist. */
|
||||||
|
struct odb_source *odb_find_source_or_die(struct object_database *odb, const char *obj_dir);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replace the current writable object directory with the specified temporary
|
* Replace the current writable object directory with the specified temporary
|
||||||
* object directory; returns the former primary source.
|
* object directory; returns the former primary source.
|
||||||
|
|||||||
Reference in New Issue
Block a user