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

[PATCH v2 07/15] packfile: express constants in terms of the_hash_algo

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Oct 15, 2018, 00:01 UTC
Message-ID
<20181015000202.951965-8-sandals@crustytoothpaste.net>
In-Reply-To
<20181015000202.951965-1-sandals@crustytoothpaste.net>

Replace uses of GIT_SHA1_RAWSZ with references to the_hash_algo to avoid dependence on a particular hash length.

It's likely that in the future, we'll update the pack format to indicate what hash algorithm it uses, and then this code will change. However, at least on an interim basis, make it easier to develop on a pure SHA-256 Git by using the_hash_algo here.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 packfile.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/packfile.c b/packfile.c
index 841b36182f..17f993b5bf 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1121,13 +1121,14 @@ int unpack_object_header(struct packed_git *p,
 void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1)
 {
 	unsigned i;
+	const unsigned hashsz = the_hash_algo->rawsz;
 	for (i = 0; i < p->num_bad_objects; i++)
-		if (hasheq(sha1, p->bad_object_sha1 + GIT_SHA1_RAWSZ * i))
+		if (hasheq(sha1, p->bad_object_sha1 + hashsz * i))
 			return;
 	p->bad_object_sha1 = xrealloc(p->bad_object_sha1,
 				      st_mult(GIT_MAX_RAWSZ,
 					      st_add(p->num_bad_objects, 1)));
-	hashcpy(p->bad_object_sha1 + GIT_SHA1_RAWSZ * p->num_bad_objects, sha1);
+	hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, sha1);
 	p->num_bad_objects++;
 }
 
Previous: brian m. carlsonNext: brian m. carlson
Message 8 of 17 in “Hash function transition part 15”
  1. 00/15 Hash function transition part 15brian m. carlson, Oct 15, 2018
  2. 01/15 object_id.cocci: match only expressions of type 'struct object_id'brian m. carlson, Oct 15, 2018
  3. 02/15 pack-bitmap-write: use GIT_MAX_RAWSZ for allocationbrian m. carlson, Oct 15, 2018
  4. 03/15 builtin/repack: replace hard-coded constantsbrian m. carlson, Oct 15, 2018
  5. 04/15 builtin/mktree: remove hard-coded constantbrian m. carlson, Oct 15, 2018
  6. 05/15 builtin/fetch-pack: remove constants with parse_oid_hexbrian m. carlson, Oct 15, 2018
  7. 06/15 pack-revindex: express constants in terms of the_hash_algobrian m. carlson, Oct 15, 2018
  8. 07/15 packfile: express constants in terms of the_hash_algobrian m. carlson, Oct 15, 2018
  9. 09/15 upload-pack: express constants in terms of the_hash_algobrian m. carlson, Oct 15, 2018
  10. 08/15 refs/packed-backend: express constants using the_hash_algobrian m. carlson, Oct 15, 2018
  11. 10/15 transport: use parse_oid_hex instead of a constantbrian m. carlson, Oct 15, 2018
  12. 11/15 tag: express constant in terms of the_hash_algobrian m. carlson, Oct 15, 2018
  13. 13/15 apply: rename new_sha1_prefix and old_sha1_prefixbrian m. carlson, Oct 15, 2018
  14. 12/15 apply: replace hard-coded constantsbrian m. carlson, Oct 15, 2018
  15. 14/15 submodule: make zero-oid comparison hash function agnosticbrian m. carlson, Oct 15, 2018
  16. 15/15 rerere: convert to use the_hash_algobrian m. carlson, Oct 15, 2018
  17. Junio C HamanoOct 25, 2018

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.