]> git.ipfire.org Git - thirdparty/git.git/commitdiff
setup: use the default algorithm to initialize repo format
authorbrian m. carlson <sandals@crustytoothpaste.net>
Fri, 20 Jun 2025 01:19:37 +0000 (01:19 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Jun 2025 14:17:36 +0000 (07:17 -0700)
When we define a new repository format with REPOSITORY_FORMAT_INIT, we
always use GIT_HASH_SHA1, and this value ends up getting used as the
default value to initialize a repository if none of the command line,
environment, or config tell us to do otherwise.

Because we might not always want to use SHA-1 as the default, let's
instead specify the default hash algorithm constant so that we will use
whatever the specified default is.  However, to make sure we continue to
read repositories without a specified hash algorithm as SHA-1, default
the repository format to the original hash algorithm (SHA-1) when
reading the repository format.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c
setup.h

diff --git a/setup.c b/setup.c
index 641c857ed5d946c828396c1fe3074156323d6d39..fb38824a2b4dcb25ee8e7fa0c750b5b772c5234d 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -835,9 +835,12 @@ static void init_repository_format(struct repository_format *format)
 int read_repository_format(struct repository_format *format, const char *path)
 {
        clear_repository_format(format);
+       format->hash_algo = GIT_HASH_ORIGINAL;
        git_config_from_file(check_repo_format, path, format);
-       if (format->version == -1)
+       if (format->version == -1) {
                clear_repository_format(format);
+               format->hash_algo = GIT_HASH_ORIGINAL;
+       }
        return format->version;
 }
 
diff --git a/setup.h b/setup.h
index 18dc3b73686ce28fac2fe04282ce95f8bf3e6b74..8522fa8575da7123d0a9dc57dbabf08677a58eaa 100644 (file)
--- a/setup.h
+++ b/setup.h
@@ -149,7 +149,7 @@ struct repository_format {
 { \
        .version = -1, \
        .is_bare = -1, \
-       .hash_algo = GIT_HASH_SHA1, \
+       .hash_algo = GIT_HASH_DEFAULT, \
        .ref_storage_format = REF_STORAGE_FORMAT_FILES, \
        .unknown_extensions = STRING_LIST_INIT_DUP, \
        .v1_only_extensions = STRING_LIST_INIT_DUP, \