]> git.ipfire.org Git - thirdparty/git.git/commitdiff
repository: enable SHA-256 support by default
authorbrian m. carlson <sandals@crustytoothpaste.net>
Wed, 29 Jul 2020 23:14:22 +0000 (23:14 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Jul 2020 16:16:49 +0000 (09:16 -0700)
Now that we have a complete SHA-256 implementation in Git, let's enable
it so people can use it.  Remove the ENABLE_SHA256 define constant
everywhere it's used.  Add tests for initializing a repository with
SHA-256.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/init-db.c
config.mak.dev
repository.c
t/t0001-init.sh

index cee64823cbb500a8df0f19f486a2d3593492b1e6..f70076d38eb3d439b521554b386e3132e33c6ceb 100644 (file)
@@ -183,11 +183,6 @@ void initialize_repository_version(int hash_algo)
        char repo_version_string[10];
        int repo_version = GIT_REPO_VERSION;
 
-#ifndef ENABLE_SHA256
-       if (hash_algo != GIT_HASH_SHA1)
-               die(_("The hash algorithm %s is not supported in this build."), hash_algos[hash_algo].name);
-#endif
-
        if (hash_algo != GIT_HASH_SHA1)
                repo_version = GIT_REPO_VERSION_READ;
 
index cd4a82a9eb4a2b0a4a1d45f0186cd7f858a0ff57..89b218d11a5313f327492795964793bec8670160 100644 (file)
@@ -16,8 +16,6 @@ DEVELOPER_CFLAGS += -Wstrict-prototypes
 DEVELOPER_CFLAGS += -Wunused
 DEVELOPER_CFLAGS += -Wvla
 
-DEVELOPER_CFLAGS += -DENABLE_SHA256
-
 ifndef COMPILER_FEATURES
 COMPILER_FEATURES := $(shell ./detect-compiler $(CC))
 endif
index 6f7f6f002b1a45faa52305ca8c370e2e959b2f5e..a4174ddb0629cdd690142fb42c5d4182492485c4 100644 (file)
@@ -89,10 +89,6 @@ void repo_set_gitdir(struct repository *repo,
 void repo_set_hash_algo(struct repository *repo, int hash_algo)
 {
        repo->hash_algo = &hash_algos[hash_algo];
-#ifndef ENABLE_SHA256
-       if (hash_algo != GIT_HASH_SHA1)
-               die(_("The hash algorithm %s is not supported in this build."), repo->hash_algo->name);
-#endif
 }
 
 /*
index 6d2467995e7afea65697d7540f2ef05cde54ae4b..d71d4c7238210ec3fc3769abb7a6345fb5922480 100755 (executable)
@@ -441,6 +441,39 @@ test_expect_success 're-init from a linked worktree' '
        )
 '
 
+test_expect_success 'init honors GIT_DEFAULT_HASH' '
+       GIT_DEFAULT_HASH=sha1 git init sha1 &&
+       git -C sha1 rev-parse --show-object-format >actual &&
+       echo sha1 >expected &&
+       test_cmp expected actual &&
+       GIT_DEFAULT_HASH=sha256 git init sha256 &&
+       git -C sha256 rev-parse --show-object-format >actual &&
+       echo sha256 >expected &&
+       test_cmp expected actual
+'
+
+test_expect_success 'init honors --object-format' '
+       git init --object-format=sha1 explicit-sha1 &&
+       git -C explicit-sha1 rev-parse --show-object-format >actual &&
+       echo sha1 >expected &&
+       test_cmp expected actual &&
+       git init --object-format=sha256 explicit-sha256 &&
+       git -C explicit-sha256 rev-parse --show-object-format >actual &&
+       echo sha256 >expected &&
+       test_cmp expected actual
+'
+
+test_expect_success 'extensions.objectFormat is not allowed with repo version 0' '
+       git init --object-format=sha256 explicit-v0 &&
+       git -C explicit-v0 config core.repositoryformatversion 0 &&
+       test_must_fail git -C explicit-v0 rev-parse --show-object-format
+'
+
+test_expect_success 'init rejects attempts to initialize with different hash' '
+       test_must_fail git -C sha1 init --object-format=sha256 &&
+       test_must_fail git -C sha256 init --object-format=sha1
+'
+
 test_expect_success MINGW 'core.hidedotfiles = false' '
        git config --global core.hidedotfiles false &&
        rm -rf newdir &&