git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v6 33/39] repository: enable SHA-256 support by default

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jul 29, 2020, 23:14 UTC
Message-ID
<20200729231428.3658647-34-sandals@crustytoothpaste.net>
In-Reply-To
<20200729231428.3658647-1-sandals@crustytoothpaste.net>

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>
---
 builtin/init-db.c |  5 -----
 config.mak.dev    |  2 --
 repository.c      |  4 ----
 t/t0001-init.sh   | 33 +++++++++++++++++++++++++++++++++
 4 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/builtin/init-db.c b/builtin/init-db.c
index cee64823cb..f70076d38e 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -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;
 
diff --git a/config.mak.dev b/config.mak.dev
index cd4a82a9eb..89b218d11a 100644
--- a/config.mak.dev
+++ b/config.mak.dev
@@ -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
diff --git a/repository.c b/repository.c
index 6f7f6f002b..a4174ddb06 100644
--- a/repository.c
+++ b/repository.c
@@ -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
 }
 
 /*
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 6d2467995e..d71d4c7238 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -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 &&
Previous: brian m. carlsonNext: brian m. carlson
Message 64 of 116 in “SHA-256, part 3/3”
  1. 00/39 SHA-256, part 3/3brian m. carlson, Jul 28, 2020
  2. 02/39 t1001: use $ZERO_OIDbrian m. carlson, Jul 28, 2020
  3. 03/39 t3305: make hash agnosticbrian m. carlson, Jul 28, 2020
  4. 04/39 t3404: prepare 'short SHA-1 collision' tests for SHA-256brian m. carlson, Jul 28, 2020
  5. 06/39 t6101: make hash size independentbrian m. carlson, Jul 28, 2020
  6. 10/39 t7003: compute appropriate length constantbrian m. carlson, Jul 28, 2020
  7. 12/39 t7201: abstract away SHA-1-specific constantsbrian m. carlson, Jul 28, 2020
  8. 15/39 t7405: make hash size independentbrian m. carlson, Jul 28, 2020
  9. 13/39 t7102: abstract away SHA-1-specific constantsbrian m. carlson, Jul 28, 2020
  10. 20/39 t8011: make hash size independentbrian m. carlson, Jul 28, 2020
  11. 17/39 t7508: use $ZERO_OID instead of hard-coded constantbrian m. carlson, Jul 28, 2020
  12. 27/39 t5308: make test work with SHA-256brian m. carlson, Jul 28, 2020
  13. 26/39 t9700: make hash size independentbrian m. carlson, Jul 28, 2020
  14. 24/39 t9350: make hash size independentbrian m. carlson, Jul 28, 2020
  15. 22/39 t9300: use $ZERO_OID instead of hard-coded object IDbrian m. carlson, Jul 28, 2020
  16. 32/39 setup: add support for reading extensions.objectformatbrian m. carlson, Jul 28, 2020
  17. 35/39 t: allow testing different hash algorithms via environmentbrian m. carlson, Jul 28, 2020
  18. 38/39 docs: add documentation for extensions.objectFormatbrian m. carlson, Jul 28, 2020
  19. 36/39 t: make SHA1 prerequisite depend on default hashbrian m. carlson, Jul 28, 2020
  20. Eric SunshineJul 29, 2020
  21. 31/39 bundle: add new version for use with SHA-256brian m. carlson, Jul 28, 2020
  22. Eric SunshineJul 29, 2020
  23. brian m. carlsonJul 29, 2020
  24. 39/39 t: remove test_oid_init in testsbrian m. carlson, Jul 28, 2020
  25. 34/39 t: add test_oid option to select hash algorithmbrian m. carlson, Jul 28, 2020
  26. 37/39 ci: run tests with SHA-256brian m. carlson, Jul 28, 2020
  27. 25/39 t9500: ensure that algorithm info is preserved in configbrian m. carlson, Jul 28, 2020
  28. 01/39 t: make test-bloom initialize repositorybrian m. carlson, Jul 28, 2020
  29. 05/39 t6100: make hash size independentbrian m. carlson, Jul 28, 2020
  30. 14/39 t7400: make hash size independentbrian m. carlson, Jul 28, 2020
  31. 11/39 t7063: make hash size independentbrian m. carlson, Jul 28, 2020
  32. 09/39 t6501: avoid hard-coded objectsbrian m. carlson, Jul 28, 2020
  33. 07/39 t6301: make hash size independentbrian m. carlson, Jul 28, 2020
  34. 29/39 http-fetch: set up git directory before parsing pack hashesbrian m. carlson, Jul 28, 2020
  35. Eric SunshineJul 29, 2020
  36. 21/39 t9300: abstract away SHA-1-specific constantsbrian m. carlson, Jul 28, 2020
  37. 30/39 builtin/verify-pack: implement an --object-format optionbrian m. carlson, Jul 28, 2020
  38. 33/39 Enable SHA-256 support by defaultbrian m. carlson, Jul 28, 2020
  39. Eric SunshineJul 29, 2020
  40. 28/39 t0410: mark test with SHA1 prerequisitebrian m. carlson, Jul 28, 2020
  41. 08/39 t6500: specify test values for SHA-256brian m. carlson, Jul 28, 2020
  42. 18/39 t8002: make hash size independentbrian m. carlson, Jul 28, 2020
  43. Eric SunshineJul 29, 2020
  44. brian m. carlsonJul 29, 2020
  45. 19/39 t8003: make hash size independentbrian m. carlson, Jul 28, 2020
  46. 23/39 t9301: make hash size independentbrian m. carlson, Jul 28, 2020
  47. 16/39 t7506: avoid checking for SHA-1-specific constantsbrian m. carlson, Jul 28, 2020
  48. 00/39 SHA-256, part 3/3brian m. carlson, Jul 29, 2020
  49. 01/39 t: make test-bloom initialize repositorybrian m. carlson, Jul 29, 2020
  50. 04/39 t3404: prepare 'short SHA-1 collision' tests for SHA-256brian m. carlson, Jul 29, 2020
  51. 07/39 t6301: make hash size independentbrian m. carlson, Jul 29, 2020
  52. 09/39 t6501: avoid hard-coded objectsbrian m. carlson, Jul 29, 2020
  53. 11/39 t7063: make hash size independentbrian m. carlson, Jul 29, 2020
  54. 13/39 t7102: abstract away SHA-1-specific constantsbrian m. carlson, Jul 29, 2020
  55. 16/39 t7506: avoid checking for SHA-1-specific constantsbrian m. carlson, Jul 29, 2020
  56. 17/39 t7508: use $ZERO_OID instead of hard-coded constantbrian m. carlson, Jul 29, 2020
  57. 19/39 t8003: make hash size independentbrian m. carlson, Jul 29, 2020
  58. 22/39 t9300: use $ZERO_OID instead of hard-coded object IDbrian m. carlson, Jul 29, 2020
  59. 25/39 t9500: ensure that algorithm info is preserved in configbrian m. carlson, Jul 29, 2020
  60. 27/39 t5308: make test work with SHA-256brian m. carlson, Jul 29, 2020
  61. 26/39 t9700: make hash size independentbrian m. carlson, Jul 29, 2020
  62. 31/39 bundle: add new version for use with SHA-256brian m. carlson, Jul 29, 2020
  63. 38/39 docs: add documentation for extensions.objectFormatbrian m. carlson, Jul 29, 2020
  64. 33/39 repository: enable SHA-256 support by defaultbrian m. carlson, Jul 29, 2020
  65. 37/39 ci: run tests with SHA-256brian m. carlson, Jul 29, 2020
  66. 30/39 builtin/verify-pack: implement an --object-format optionbrian m. carlson, Jul 29, 2020
  67. 35/39 t: allow testing different hash algorithms via environmentbrian m. carlson, Jul 29, 2020
  68. 32/39 setup: add support for reading extensions.objectformatbrian m. carlson, Jul 29, 2020
  69. 39/39 t: remove test_oid_init in testsbrian m. carlson, Jul 29, 2020
  70. 03/39 t3305: make hash agnosticbrian m. carlson, Jul 29, 2020
  71. 05/39 t6100: make hash size independentbrian m. carlson, Jul 29, 2020
  72. 08/39 t6500: specify test values for SHA-256brian m. carlson, Jul 29, 2020
  73. 12/39 t7201: abstract away SHA-1-specific constantsbrian m. carlson, Jul 29, 2020
  74. 06/39 t6101: make hash size independentbrian m. carlson, Jul 29, 2020
  75. 18/39 t8002: make hash size independentbrian m. carlson, Jul 29, 2020
  76. 10/39 t7003: compute appropriate length constantbrian m. carlson, Jul 29, 2020
  77. 14/39 t7400: make hash size independentbrian m. carlson, Jul 29, 2020
  78. 15/39 t7405: make hash size independentbrian m. carlson, Jul 29, 2020
  79. 02/39 t1001: use $ZERO_OIDbrian m. carlson, Jul 29, 2020
  80. 36/39 t: make SHA1 prerequisite depend on default hashbrian m. carlson, Jul 29, 2020
  81. 28/39 t0410: mark test with SHA1 prerequisitebrian m. carlson, Jul 29, 2020
  82. 21/39 t9300: abstract away SHA-1-specific constantsbrian m. carlson, Jul 29, 2020
  83. 24/39 t9350: make hash size independentbrian m. carlson, Jul 29, 2020
  84. 23/39 t9301: make hash size independentbrian m. carlson, Jul 29, 2020
  85. 20/39 t8011: make hash size independentbrian m. carlson, Jul 29, 2020
  86. 29/39 http-fetch: set up git directory before parsing pack hashesbrian m. carlson, Jul 29, 2020
  87. 34/39 t: add test_oid option to select hash algorithmbrian m. carlson, Jul 29, 2020
  88. Eric SunshineJul 30, 2020
  89. Junio C HamanoJul 30, 2020
  90. Ævar Arnfjörð BjarmasonMar 10, 2021
  91. Elijah NewrenMar 10, 2021
  92. Jeff KingMar 10, 2021
  93. 0/3 sha256 fixes for filter-branchJeff King, Mar 10, 2021
  94. 3/3 filter-branch: drop $_x40 globJeff King, Mar 10, 2021
  95. Junio C HamanoMar 10, 2021
  96. 1/4 git-bisect: remove unused SHA-1 $x40 shell variableÆvar Arnfjörð Bjarmason, Mar 11, 2021
  97. 0/4 bisect + tests: remove old $_x05, $_x35 and $_x40 variablesÆvar Arnfjörð Bjarmason, Mar 11, 2021
  98. 4/4 tests: get rid of $_x05 from the test suiteÆvar Arnfjörð Bjarmason, Mar 11, 2021
  99. Junio C HamanoMar 11, 2021
  100. Ævar Arnfjörð BjarmasonMar 11, 2021
  101. Junio C HamanoMar 11, 2021
  102. 3/4 shortlog tests: rewrite to get rid of --abbrev=35 hardcodingÆvar Arnfjörð Bjarmason, Mar 11, 2021
  103. Junio C HamanoMar 11, 2021
  104. Jeff KingMar 11, 2021
  105. 2/4 test-lib: remove unused $_x40 and $_z40 variablesÆvar Arnfjörð Bjarmason, Mar 11, 2021
  106. Junio C HamanoMar 11, 2021
  107. 1/3 t7003: test ref rewriting explicitlyJeff King, Mar 10, 2021
  108. Ævar Arnfjörð BjarmasonMar 11, 2021
  109. brian m. carlsonMar 11, 2021
  110. Jeff KingMar 11, 2021
  111. brian m. carlsonMar 11, 2021
  112. 2/3 filter-branch: drop multiple-ancestor warningJeff King, Mar 10, 2021
  113. Junio C HamanoMar 10, 2021
  114. Elijah NewrenMar 10, 2021
  115. Junio C HamanoMar 10, 2021
  116. brian m. carlsonMar 10, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.