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

[PATCH v2 35/42] sha1_file: convert cached object code to struct object_id

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
May 2, 2018, 00:26 UTC
Message-ID
<20180502002610.915892-36-sandals@crustytoothpaste.net>
In-Reply-To
<20180502002610.915892-1-sandals@crustytoothpaste.net>

Convert the code that looks up cached objects to use struct object_id. Adjust the lookup for empty trees to use the_hash_algo. Note that we don't need to be concerned about the hard-coded object ID in the empty_tree object since we never use it.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 sha1-file.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/sha1-file.c b/sha1-file.c
index 11598b43eb..4acbf8ee08 100644
--- a/sha1-file.c
+++ b/sha1-file.c
@@ -119,7 +119,7 @@ const char *empty_blob_oid_hex(void)
  * application).
  */
 static struct cached_object {
-	unsigned char sha1[20];
+	struct object_id oid;
 	enum object_type type;
 	void *buf;
 	unsigned long size;
@@ -127,22 +127,22 @@ static struct cached_object {
 static int cached_object_nr, cached_object_alloc;
 
 static struct cached_object empty_tree = {
-	EMPTY_TREE_SHA1_BIN_LITERAL,
+	{ EMPTY_TREE_SHA1_BIN_LITERAL },
 	OBJ_TREE,
 	"",
 	0
 };
 
-static struct cached_object *find_cached_object(const unsigned char *sha1)
+static struct cached_object *find_cached_object(const struct object_id *oid)
 {
 	int i;
 	struct cached_object *co = cached_objects;
 
 	for (i = 0; i < cached_object_nr; i++, co++) {
-		if (!hashcmp(co->sha1, sha1))
+		if (!oidcmp(&co->oid, oid))
 			return co;
 	}
-	if (!hashcmp(sha1, empty_tree.sha1))
+	if (!oidcmp(oid, the_hash_algo->empty_tree))
 		return &empty_tree;
 	return NULL;
 }
@@ -1260,7 +1260,7 @@ int oid_object_info_extended(const struct object_id *oid, struct object_info *oi
 		oi = &blank_oi;
 
 	if (!(flags & OBJECT_INFO_SKIP_CACHED)) {
-		struct cached_object *co = find_cached_object(real->hash);
+		struct cached_object *co = find_cached_object(real);
 		if (co) {
 			if (oi->typep)
 				*(oi->typep) = co->type;
@@ -1369,7 +1369,7 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
 	struct cached_object *co;
 
 	hash_object_file(buf, len, type_name(type), oid);
-	if (has_sha1_file(oid->hash) || find_cached_object(oid->hash))
+	if (has_sha1_file(oid->hash) || find_cached_object(oid))
 		return 0;
 	ALLOC_GROW(cached_objects, cached_object_nr + 1, cached_object_alloc);
 	co = &cached_objects[cached_object_nr++];
@@ -1377,7 +1377,7 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
 	co->type = type;
 	co->buf = xmalloc(len);
 	memcpy(co->buf, buf, len);
-	hashcpy(co->sha1, oid->hash);
+	oidcpy(&co->oid, oid);
 	return 0;
 }
 
Previous: brian m. carlsonNext: brian m. carlson
Message 19 of 45 in “object_id part 13”
  1. 00/42 object_id part 13brian m. carlson, May 2, 2018
  2. 01/42 cache: add a function to read an object ID from a bufferbrian m. carlson, May 2, 2018
  3. 02/42 server-info: remove unused members from struct pack_infobrian m. carlson, May 2, 2018
  4. 06/42 sha1-file: convert freshen functions to object_idbrian m. carlson, May 2, 2018
  5. 07/42 packfile: convert find_pack_entry to object_idbrian m. carlson, May 2, 2018
  6. 11/42 tree-walk: avoid hard-coded 20 constantbrian m. carlson, May 2, 2018
  7. 05/42 packfile: convert has_sha1_pack to object_idbrian m. carlson, May 2, 2018
  8. 13/42 fsck: convert static functions to struct object_idbrian m. carlson, May 2, 2018
  9. 17/42 pack-redundant: convert linked lists to use struct object_idbrian m. carlson, May 2, 2018
  10. 15/42 split-index: convert struct split_index to object_idbrian m. carlson, May 2, 2018
  11. 14/42 submodule-config: convert structures to object_idbrian m. carlson, May 2, 2018
  12. 18/42 index-pack: abstract away hash function constantbrian m. carlson, May 2, 2018
  13. 12/42 tree-walk: convert get_tree_entry_follow_symlinks to object_idbrian m. carlson, May 2, 2018
  14. 10/42 pack-redundant: abstract away hash algorithmbrian m. carlson, May 2, 2018
  15. 09/42 pack-objects: abstract away hash algorithmbrian m. carlson, May 2, 2018
  16. 27/42 builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algobrian m. carlson, May 2, 2018
  17. 28/42 builtin/merge: switch tree functions to use object_idbrian m. carlson, May 2, 2018
  18. 25/42 builtin/receive-pack: avoid hard-coded constants for push certsbrian m. carlson, May 2, 2018
  19. 35/42 sha1_file: convert cached object code to struct object_idbrian m. carlson, May 2, 2018
  20. 38/42 dir: use the_hash_algo for empty blob object IDbrian m. carlson, May 2, 2018
  21. 37/42 sequencer: use the_hash_algo for empty tree object IDbrian m. carlson, May 2, 2018
  22. 36/42 cache-tree: use is_empty_tree_oidbrian m. carlson, May 2, 2018
  23. 41/42 add--interactive: compute the empty tree valuebrian m. carlson, May 2, 2018
  24. 39/42 sha1_file: only expose empty object constants through git_hash_algobrian m. carlson, May 2, 2018
  25. 26/42 sha1-file: add functions for hex empty tree and blob OIDsbrian m. carlson, May 2, 2018
  26. 42/42 merge-one-file: compute empty blob object IDbrian m. carlson, May 2, 2018
  27. 40/42 Update shell scripts to compute empty tree object IDbrian m. carlson, May 2, 2018
  28. 34/42 builtin/reset: convert use of EMPTY_TREE_SHA1_BINbrian m. carlson, May 2, 2018
  29. 33/42 builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEXbrian m. carlson, May 2, 2018
  30. 32/42 wt-status: convert two uses of EMPTY_TREE_SHA1_HEXbrian m. carlson, May 2, 2018
  31. 31/42 submodule: convert several uses of EMPTY_TREE_SHA1_HEXbrian m. carlson, May 2, 2018
  32. 30/42 sequencer: convert one use of EMPTY_TREE_SHA1_HEXbrian m. carlson, May 2, 2018
  33. 29/42 merge: convert empty tree constant to the_hash_algobrian m. carlson, May 2, 2018
  34. 23/42 upload-pack: replace use of several hard-coded constantsbrian m. carlson, May 2, 2018
  35. 22/42 revision: replace use of hard-coded constantsbrian m. carlson, May 2, 2018
  36. 24/42 diff: specify abbreviation size in terms of the_hash_algobrian m. carlson, May 2, 2018
  37. 16/42 Update struct index_state to use struct object_idbrian m. carlson, May 2, 2018
  38. 21/42 http: eliminate hard-coded constantsbrian m. carlson, May 2, 2018
  39. 20/42 dir: convert struct untracked_cache_dir to object_idbrian m. carlson, May 2, 2018
  40. 19/42 commit: convert uses of get_sha1_hex to get_oid_hexbrian m. carlson, May 2, 2018
  41. 08/42 packfile: abstract away hash constant valuesbrian m. carlson, May 2, 2018
  42. 04/42 packfile: remove unused member from struct pack_entrybrian m. carlson, May 2, 2018
  43. 03/42 Remove unused member in struct object_contextbrian m. carlson, May 2, 2018
  44. Duy NguyenMay 2, 2018
  45. brian m. carlsonMay 2, 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.