aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-04-18 14:14:29 +0200
committerJunio C Hamano <gitster@pobox.com>2024-04-18 12:30:42 -0700
commit19fa8cd48c106ded717eeaf145b45e995318f3fe (patch)
treed72903d393216af0db3529a8f5f2a1daef954416
parentbuiltin/clone: stop using `the_index` (diff)
downloadgit-19fa8cd48c106ded717eeaf145b45e995318f3fe.tar.xz
git-19fa8cd48c106ded717eeaf145b45e995318f3fe.zip
repository: drop `the_index` variable
All users of `the_index` have been converted to use either a custom `struct index_state *` or the index provided by `the_repository`. We can thus drop the globally-accessible declaration of this variable. In fact, we can go further than that and drop `the_index` completely now and have it be allocated dynamically in `initialize_repository()` as all the other data structures in it are. This concludes the quest to make Git `the_index` free, which has started with 4aab5b46f4 (Make read-cache.c "the_index" free., 2007-04-01). Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--repository.c25
-rw-r--r--repository.h3
2 files changed, 6 insertions, 22 deletions
diff --git a/repository.c b/repository.c
index d64d15d9528..089edbffa2d 100644
--- a/repository.c
+++ b/repository.c
@@ -1,8 +1,3 @@
-/*
- * not really _using_ the compat macros, just make sure the_index
- * declaration matches the definition in this file.
- */
-#define USE_THE_INDEX_VARIABLE
#include "git-compat-util.h"
#include "abspath.h"
#include "repository.h"
@@ -23,22 +18,20 @@
/* The main repository */
static struct repository the_repo;
struct repository *the_repository;
-struct index_state the_index;
-static void initialize_repository(struct repository *repo,
- struct index_state *index)
+static void initialize_repository(struct repository *repo)
{
- repo->index = index;
repo->objects = raw_object_store_new();
repo->remote_state = remote_state_new();
repo->parsed_objects = parsed_object_pool_new();
- index_state_init(index, repo);
+ ALLOC_ARRAY(repo->index, 1);
+ index_state_init(repo->index, repo);
}
void initialize_the_repository(void)
{
the_repository = &the_repo;
- initialize_repository(the_repository, &the_index);
+ initialize_repository(the_repository);
repo_set_hash_algo(&the_repo, GIT_HASH_SHA1);
}
@@ -191,12 +184,7 @@ int repo_init(struct repository *repo,
struct repository_format format = REPOSITORY_FORMAT_INIT;
memset(repo, 0, sizeof(*repo));
- if (repo == the_repository) {
- initialize_repository(the_repository, &the_index);
- } else {
- ALLOC_ARRAY(repo->index, 1);
- initialize_repository(repo, repo->index);
- }
+ initialize_repository(repo);
if (repo_init_gitdir(repo, gitdir))
goto error;
@@ -313,8 +301,7 @@ void repo_clear(struct repository *repo)
if (repo->index) {
discard_index(repo->index);
- if (repo->index != &the_index)
- FREE_AND_NULL(repo->index);
+ FREE_AND_NULL(repo->index);
}
if (repo->promisor_remote_config) {
diff --git a/repository.h b/repository.h
index 268436779c8..6f4af154175 100644
--- a/repository.h
+++ b/repository.h
@@ -187,9 +187,6 @@ struct repository {
};
extern struct repository *the_repository;
-#ifdef USE_THE_INDEX_VARIABLE
-extern struct index_state the_index;
-#endif
/*
* Define a custom repository layout. Any field can be NULL, which