mirror of
https://github.com/git/git
synced 2024-11-04 16:17:49 +00:00
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>
This commit is contained in:
parent
9ee6d63bab
commit
19fa8cd48c
2 changed files with 6 additions and 22 deletions
25
repository.c
25
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) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue