summaryrefslogtreecommitdiff
path: root/repository.c
diff options
context:
space:
mode:
authorGlen Choo <chooglen@google.com>2021-11-18 00:53:22 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-11-19 06:31:19 (GMT)
commitfd3cb0501e175bcac042587cb7bb75e16034a5b7 (patch)
tree50bb4343708d25a77d2c57d575691634f47088a5 /repository.c
parente083ef5d54707a4bb855e8ac6f6ee0576a020349 (diff)
downloadgit-fd3cb0501e175bcac042587cb7bb75e16034a5b7.zip
git-fd3cb0501e175bcac042587cb7bb75e16034a5b7.tar.gz
git-fd3cb0501e175bcac042587cb7bb75e16034a5b7.tar.bz2
remote: move static variables into per-repository struct
remote.c does not works with non-the_repository because it stores its state as static variables. To support non-the_repository, we can use a per-repository struct for the remotes subsystem. Prepare for this change by defining a struct remote_state that holds the remotes subsystem state and move the static variables of remote.c into the_repository->remote_state. This introduces no behavioral or API changes. Signed-off-by: Glen Choo <chooglen@google.com> Reviewed-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'repository.c')
-rw-r--r--repository.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/repository.c b/repository.c
index c5b90ba..c7ea706 100644
--- a/repository.c
+++ b/repository.c
@@ -9,6 +9,7 @@
#include "config.h"
#include "object.h"
#include "lockfile.h"
+#include "remote.h"
#include "submodule-config.h"
#include "sparse-index.h"
#include "promisor-remote.h"
@@ -24,6 +25,7 @@ void initialize_the_repository(void)
the_repo.index = &the_index;
the_repo.objects = raw_object_store_new();
+ the_repo.remote_state = remote_state_new();
the_repo.parsed_objects = parsed_object_pool_new();
repo_set_hash_algo(&the_repo, GIT_HASH_SHA1);
@@ -164,6 +166,7 @@ int repo_init(struct repository *repo,
repo->objects = raw_object_store_new();
repo->parsed_objects = parsed_object_pool_new();
+ repo->remote_state = remote_state_new();
if (repo_init_gitdir(repo, gitdir))
goto error;
@@ -270,6 +273,11 @@ void repo_clear(struct repository *repo)
promisor_remote_clear(repo->promisor_remote_config);
FREE_AND_NULL(repo->promisor_remote_config);
}
+
+ if (repo->remote_state) {
+ remote_state_clear(repo->remote_state);
+ FREE_AND_NULL(repo->remote_state);
+ }
}
int repo_read_index(struct repository *repo)