summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-12-11 10:30:15 +0100
committerJunio C Hamano <gitster@pobox.com>2025-12-11 18:39:37 +0900
commit3f42555322f86f17a2dac4f585edab1d84f3df57 (patch)
treed324e525a21da926a16d2becb9d2a5f6cf84a69e
parent430e0e0f2e75673206321f6f4942c0bc7856c8b7 (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.c125
1 files changed, 54 insertions, 71 deletions
diff --git a/odb.c b/odb.c
index 59944d4649..dcf4a62cd2 100644
--- a/odb.c
+++ b/odb.c
@@ -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)
{