mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-14 15:01:15 -05:00
setup: stop applying repository format twice
When discovering the repository in "setup.c" we apply the final
repository format multiple times:
- Once via `repository_format_configure()`, where we configure the
repository format for both `struct repository_format` and `struct
repository`.
- And once via `apply_repository_format()`, where we then apply the
`struct repository_format` to the `struct repository` again.
As the format will be applied to the repository when applying the format
it's thus somewhat unnecessary to also apply it to the repository when
adapting the discovered format. The only reason we have to do this is
because we call `repository_format_configure()` after we have already
applied it.
Refactor the code so that we first configure the repository format
before applying it to the repository so that we can stop setting the
hash and reference storage format multiple times.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
362be986e8
commit
88e7bf6460
9
setup.c
9
setup.c
@@ -2710,8 +2710,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void repository_format_configure(struct repository *repo,
|
||||
struct repository_format *repo_fmt,
|
||||
static void repository_format_configure(struct repository_format *repo_fmt,
|
||||
int hash, enum ref_storage_format ref_format)
|
||||
{
|
||||
struct default_format_config cfg = {
|
||||
@@ -2748,7 +2747,6 @@ static void repository_format_configure(struct repository *repo,
|
||||
} else if (cfg.hash != GIT_HASH_UNKNOWN) {
|
||||
repo_fmt->hash_algo = cfg.hash;
|
||||
}
|
||||
repo_set_hash_algo(repo, repo_fmt->hash_algo);
|
||||
|
||||
env = getenv("GIT_DEFAULT_REF_FORMAT");
|
||||
if (repo_fmt->version >= 0 &&
|
||||
@@ -2786,9 +2784,6 @@ static void repository_format_configure(struct repository *repo,
|
||||
|
||||
free(backend);
|
||||
}
|
||||
|
||||
repo_set_ref_storage_format(repo, repo_fmt->ref_storage_format,
|
||||
repo_fmt->ref_storage_payload);
|
||||
}
|
||||
|
||||
int init_db(struct repository *repo,
|
||||
@@ -2830,10 +2825,10 @@ int init_db(struct repository *repo,
|
||||
* is an attempt to reinitialize new repository with an old tool.
|
||||
*/
|
||||
check_repository_format_gently(repo_get_git_dir(repo), &repo_fmt, NULL);
|
||||
repository_format_configure(&repo_fmt, hash, ref_storage_format);
|
||||
if (apply_repository_format(repo, &repo_fmt, APPLY_REPOSITORY_FORMAT_HONOR_ENV, &err) < 0)
|
||||
die("%s", err.buf);
|
||||
startup_info->have_repository = 1;
|
||||
repository_format_configure(repo, &repo_fmt, hash, ref_storage_format);
|
||||
|
||||
/*
|
||||
* Ensure `core.hidedotfiles` is processed. This must happen after we
|
||||
|
||||
Reference in New Issue
Block a user