mirror of
https://github.com/git/git.git
synced 2024-11-08 15:19:28 +01:00
repository: drop initialize_the_repository()
Now that we have dropped `the_index`, `initialize_the_repository()` doesn't really do a lot anymore except for setting up the pointer for `the_repository` and then calling `initialize_repository()`. The former can be replaced by statically initializing the pointer though, which basically makes this function moot. Convert callers to instead call `initialize_repository(the_repository)` and drop `initialize_thee_repository()`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
19fa8cd48c
commit
0c47355790
@ -48,7 +48,7 @@ int main(int argc, const char **argv)
|
||||
setlocale(LC_CTYPE, "");
|
||||
git_setup_gettext();
|
||||
|
||||
initialize_the_repository();
|
||||
initialize_repository(the_repository);
|
||||
|
||||
attr_start();
|
||||
|
||||
|
@ -11,7 +11,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
||||
{
|
||||
struct commit_graph *g;
|
||||
|
||||
initialize_the_repository();
|
||||
initialize_repository(the_repository);
|
||||
|
||||
/*
|
||||
* Initialize the_repository with commit-graph settings that would
|
||||
* normally be read from the repository's gitdir. We want to avoid
|
||||
|
29
repository.c
29
repository.c
@ -17,22 +17,35 @@
|
||||
|
||||
/* The main repository */
|
||||
static struct repository the_repo;
|
||||
struct repository *the_repository;
|
||||
struct repository *the_repository = &the_repo;
|
||||
|
||||
static void initialize_repository(struct repository *repo)
|
||||
void initialize_repository(struct repository *repo)
|
||||
{
|
||||
repo->objects = raw_object_store_new();
|
||||
repo->remote_state = remote_state_new();
|
||||
repo->parsed_objects = parsed_object_pool_new();
|
||||
ALLOC_ARRAY(repo->index, 1);
|
||||
index_state_init(repo->index, repo);
|
||||
}
|
||||
|
||||
void initialize_the_repository(void)
|
||||
{
|
||||
the_repository = &the_repo;
|
||||
initialize_repository(the_repository);
|
||||
repo_set_hash_algo(&the_repo, GIT_HASH_SHA1);
|
||||
/*
|
||||
* Unfortunately, we need to keep this hack around for the time being:
|
||||
*
|
||||
* - Not setting up the hash algorithm for `the_repository` leads to
|
||||
* crashes because `the_hash_algo` is a macro that expands to
|
||||
* `the_repository->hash_algo`. So if Git commands try to access
|
||||
* `the_hash_algo` without a Git directory we crash.
|
||||
*
|
||||
* - Setting up the hash algorithm to be SHA1 by default breaks other
|
||||
* commands when running with SHA256.
|
||||
*
|
||||
* This is another point in case why having global state is a bad idea.
|
||||
* Eventually, we should remove this hack and stop setting the hash
|
||||
* algorithm in this function altogether. Instead, it should only ever
|
||||
* be set via our repository setup procedures. But that requires more
|
||||
* work.
|
||||
*/
|
||||
if (repo == the_repository)
|
||||
repo_set_hash_algo(repo, GIT_HASH_SHA1);
|
||||
}
|
||||
|
||||
static void expand_base_dir(char **out, const char *in,
|
||||
|
@ -207,7 +207,7 @@ void repo_set_worktree(struct repository *repo, const char *path);
|
||||
void repo_set_hash_algo(struct repository *repo, int algo);
|
||||
void repo_set_compat_hash_algo(struct repository *repo, int compat_algo);
|
||||
void repo_set_ref_storage_format(struct repository *repo, unsigned int format);
|
||||
void initialize_the_repository(void);
|
||||
void initialize_repository(struct repository *repo);
|
||||
RESULT_MUST_BE_USED
|
||||
int repo_init(struct repository *r, const char *gitdir, const char *worktree);
|
||||
|
||||
|
@ -9,7 +9,7 @@ int cmd__read_cache(int argc, const char **argv)
|
||||
int i, cnt = 1;
|
||||
const char *name = NULL;
|
||||
|
||||
initialize_the_repository();
|
||||
initialize_repository(the_repository);
|
||||
|
||||
if (argc > 1 && skip_prefix(argv[1], "--print-and-refresh=", &name)) {
|
||||
argc--;
|
||||
|
Loading…
Reference in New Issue
Block a user