aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-04-23 07:08:21 +0200
committerJunio C Hamano <gitster@pobox.com>2024-04-23 10:55:13 -0700
commitaceb1c27e6db86a157079e00a5acc331752dd2c7 (patch)
tree0ffea0b0d59ce9f83b5a89bfd0c7bcd5d19a144f
parentbuiltin/shortlog: don't set up revisions without repo (diff)
downloadgit-aceb1c27e6db86a157079e00a5acc331752dd2c7.tar.xz
git-aceb1c27e6db86a157079e00a5acc331752dd2c7.zip
repository: stop setting SHA1 as the default object hash
During the startup of Git, we call `initialize_the_repository()` to set up `the_repository` as well as `the_index`. Part of this setup is also to set the default object hash of the repository to SHA1. This has the effect that `the_hash_algo` is getting initialized to SHA1, as well. This default hash algorithm eventually gets overridden by most Git commands via `setup_git_directory()`, which also detects the actual hash algorithm used by the repository. There are some commands though that don't access a repository at all, or at a later point only, and thus retain the default hash function for some amount of time. As some of the the preceding commits demonstrate, this can lead to subtle issues when we access `the_hash_algo` when no repository has been set up. Address this issue by dropping the set up of the default hash algorithm completely. The effect of this is that `the_hash_algo` will map to a `NULL` pointer and thus cause Git to crash when something tries to access the hash algorithm without it being properly initialized. It thus forces all Git commands to explicitly set up the hash algorithm in case there is no repository. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--repository.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/repository.c b/repository.c
index e15b416944d..b65b1a8c8b7 100644
--- a/repository.c
+++ b/repository.c
@@ -35,8 +35,6 @@ void initialize_the_repository(void)
the_repo.parsed_objects = parsed_object_pool_new();
index_state_init(&the_index, the_repository);
-
- repo_set_hash_algo(&the_repo, GIT_HASH_SHA1);
}
static void expand_base_dir(char **out, const char *in,