diff options
| author | Patrick Steinhardt <ps@pks.im> | 2025-12-11 10:30:15 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-12-11 18:39:37 +0900 |
| commit | 3f42555322f86f17a2dac4f585edab1d84f3df57 (patch) | |
| tree | d324e525a21da926a16d2becb9d2a5f6cf84a69e | |
| parent | 430e0e0f2e75673206321f6f4942c0bc7856c8b7 (diff) | |
odb: drop forward declaration of `read_info_alternates()`
Now that we have removed the mutual recursion in the preceding commit
it is not necessary anymore to have a forward declaration of the
`read_info_alternates()` function. Move the function and its
dependencies further up so that we can remove it.
Note that this commit also removes the function documentation of
`read_info_alternates()`. It's unclear what it's documenting, but it for
sure isn't documenting the modern behaviour of the function anymore.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | odb.c | 125 |
1 files changed, 54 insertions, 71 deletions
@@ -132,77 +132,6 @@ out: return usable; } -/* - * Prepare alternate object database registry. - * - * The variable alt_odb_list points at the list of struct - * odb_source. The elements on this list come from - * non-empty elements from colon separated ALTERNATE_DB_ENVIRONMENT - * environment variable, and $GIT_OBJECT_DIRECTORY/info/alternates, - * whose contents is similar to that environment variable but can be - * LF separated. Its base points at a statically allocated buffer that - * contains "/the/directory/corresponding/to/.git/objects/...", while - * its name points just after the slash at the end of ".git/objects/" - * in the example above, and has enough space to hold all hex characters - * of the object ID, an extra slash for the first level indirection, and - * the terminating NUL. - */ -static void read_info_alternates(const char *relative_base, - struct strvec *out); - -static struct odb_source *odb_source_new(struct object_database *odb, - const char *path, - bool local) -{ - struct odb_source *source; - - CALLOC_ARRAY(source, 1); - source->odb = odb; - source->local = local; - source->path = xstrdup(path); - source->loose = odb_source_loose_new(source); - - return source; -} - -static struct odb_source *odb_add_alternate_recursively(struct object_database *odb, - const char *source, - int depth) -{ - struct odb_source *alternate = NULL; - struct strvec sources = STRVEC_INIT; - khiter_t pos; - int ret; - - if (!odb_is_source_usable(odb, source)) - goto error; - - alternate = odb_source_new(odb, source, false); - - /* add the alternate entry */ - *odb->sources_tail = alternate; - odb->sources_tail = &(alternate->next); - - pos = kh_put_odb_path_map(odb->source_by_path, alternate->path, &ret); - if (!ret) - BUG("source must not yet exist"); - kh_value(odb->source_by_path, pos) = alternate; - - /* recursively add alternates */ - read_info_alternates(alternate->path, &sources); - if (sources.nr && depth + 1 > 5) { - error(_("%s: ignoring alternate object stores, nesting too deep"), - source); - } else { - for (size_t i = 0; i < sources.nr; i++) - odb_add_alternate_recursively(odb, sources.v[i], depth + 1); - } - - error: - strvec_clear(&sources); - return alternate; -} - static void parse_alternates(const char *string, int sep, const char *relative_base, @@ -288,6 +217,60 @@ static void read_info_alternates(const char *relative_base, free(path); } + +static struct odb_source *odb_source_new(struct object_database *odb, + const char *path, + bool local) +{ + struct odb_source *source; + + CALLOC_ARRAY(source, 1); + source->odb = odb; + source->local = local; + source->path = xstrdup(path); + source->loose = odb_source_loose_new(source); + + return source; +} + +static struct odb_source *odb_add_alternate_recursively(struct object_database *odb, + const char *source, + int depth) +{ + struct odb_source *alternate = NULL; + struct strvec sources = STRVEC_INIT; + khiter_t pos; + int ret; + + if (!odb_is_source_usable(odb, source)) + goto error; + + alternate = odb_source_new(odb, source, false); + + /* add the alternate entry */ + *odb->sources_tail = alternate; + odb->sources_tail = &(alternate->next); + + pos = kh_put_odb_path_map(odb->source_by_path, alternate->path, &ret); + if (!ret) + BUG("source must not yet exist"); + kh_value(odb->source_by_path, pos) = alternate; + + /* recursively add alternates */ + read_info_alternates(alternate->path, &sources); + if (sources.nr && depth + 1 > 5) { + error(_("%s: ignoring alternate object stores, nesting too deep"), + source); + } else { + for (size_t i = 0; i < sources.nr; i++) + odb_add_alternate_recursively(odb, sources.v[i], depth + 1); + } + + error: + strvec_clear(&sources); + return alternate; +} + void odb_add_to_alternates_file(struct object_database *odb, const char *dir) { |
