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

[PATCH 02/35] object: add repository argument to lookup_object

From
Stefan Beller <sbeller@google.com>
Date
May 30, 2018, 00:47 UTC
Message-ID
<20180530004810.30076-3-sbeller@google.com>
In-Reply-To
<20180530004810.30076-1-sbeller@google.com>

Add a repository argument to allow callers of lookup_object to be more specific about which repository to handle. This is a small mechanical change; it doesn't change the implementation to handle repositories other than the_repository yet.

As with the previous commits, use a macro to catch callers passing a repository other than the_repository at compile time.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 blob.c                   |  2 +-
 builtin/fast-export.c    |  5 +++--
 builtin/fsck.c           |  5 +++--
 builtin/name-rev.c       |  3 ++-
 builtin/prune.c          |  2 +-
 builtin/unpack-objects.c |  2 +-
 commit.c                 |  2 +-
 fetch-pack.c             | 13 +++++++------
 http-push.c              |  2 +-
 object.c                 |  8 ++++----
 object.h                 |  3 ++-
 reachable.c              |  4 ++--
 tag.c                    |  2 +-
 tree.c                   |  2 +-
 upload-pack.c            |  2 +-
 15 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/blob.c b/blob.c
index 458dafa811e..75b737a761e 100644
--- a/blob.c
+++ b/blob.c
@@ -7,7 +7,7 @@ const char *blob_type = "blob";
 
 struct blob *lookup_blob(const struct object_id *oid)
 {
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 	if (!obj)
 		return create_object(the_repository, oid->hash,
 				     alloc_blob_node(the_repository));
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 0da875b58c9..24d42842f9d 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -231,7 +231,7 @@ static void export_blob(const struct object_id *oid)
 	if (is_null_oid(oid))
 		return;
 
-	object = lookup_object(oid->hash);
+	object = lookup_object(the_repository, oid->hash);
 	if (object && object->flags & SHOWN)
 		return;
 
@@ -403,7 +403,8 @@ static void show_filemodify(struct diff_queue_struct *q,
 						   anonymize_sha1(&spec->oid) :
 						   spec->oid.hash));
 			else {
-				struct object *object = lookup_object(spec->oid.hash);
+				struct object *object = lookup_object(the_repository,
+								      spec->oid.hash);
 				printf("M %06o :%d ", spec->mode,
 				       get_object_mark(object));
 			}
diff --git a/builtin/fsck.c b/builtin/fsck.c
index 4b410cba54e..98fdeef5407 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -410,7 +410,7 @@ static void fsck_handle_reflog_oid(const char *refname, struct object_id *oid,
 	struct object *obj;
 
 	if (!is_null_oid(oid)) {
-		obj = lookup_object(oid->hash);
+		obj = lookup_object(the_repository, oid->hash);
 		if (obj && (obj->flags & HAS_OBJ)) {
 			if (timestamp && name_objects)
 				add_decoration(fsck_walk_options.object_names,
@@ -762,7 +762,8 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
 		const char *arg = argv[i];
 		struct object_id oid;
 		if (!get_oid(arg, &oid)) {
-			struct object *obj = lookup_object(oid.hash);
+			struct object *obj = lookup_object(the_repository,
+							   oid.hash);
 
 			if (!obj || !(obj->flags & HAS_OBJ)) {
 				if (is_promisor_object(&oid))
diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index de54fa93e4f..f6eb419a029 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -379,7 +379,8 @@ static void name_rev_line(char *p, struct name_ref_data *data)
 			*(p+1) = 0;
 			if (!get_oid(p - (GIT_SHA1_HEXSZ - 1), &oid)) {
 				struct object *o =
-					lookup_object(oid.hash);
+					lookup_object(the_repository,
+						      oid.hash);
 				if (o)
 					name = get_rev_name(o, &buf);
 			}
diff --git a/builtin/prune.c b/builtin/prune.c
index 70ec35aa058..72b0621b768 100644
--- a/builtin/prune.c
+++ b/builtin/prune.c
@@ -40,7 +40,7 @@ static int prune_object(const struct object_id *oid, const char *fullpath,
 	 * Do we know about this object?
 	 * It must have been reachable
 	 */
-	if (lookup_object(oid->hash))
+	if (lookup_object(the_repository, oid->hash))
 		return 0;
 
 	if (lstat(fullpath, &st)) {
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index ded798b72ff..9a4d2708123 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -331,7 +331,7 @@ static int resolve_against_held(unsigned nr, const struct object_id *base,
 {
 	struct object *obj;
 	struct obj_buffer *obj_buffer;
-	obj = lookup_object(base->hash);
+	obj = lookup_object(the_repository, base->hash);
 	if (!obj)
 		return 0;
 	obj_buffer = lookup_object_buffer(obj);
diff --git a/commit.c b/commit.c
index 11db72e9db2..97b4ccde8f0 100644
--- a/commit.c
+++ b/commit.c
@@ -53,7 +53,7 @@ struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref
 
 struct commit *lookup_commit(const struct object_id *oid)
 {
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 	if (!obj)
 		return create_object(the_repository, oid->hash,
 				     alloc_commit_node(the_repository));
diff --git a/fetch-pack.c b/fetch-pack.c
index fa39ada77ee..4523e25ff4e 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -362,7 +362,7 @@ static int find_common(struct fetch_pack_args *args,
 		 * interested in the case we *know* the object is
 		 * reachable and we have already scanned it.
 		 */
-		if (((o = lookup_object(remote->hash)) != NULL) &&
+		if (((o = lookup_object(the_repository, remote->hash)) != NULL) &&
 				(o->flags & COMPLETE)) {
 			continue;
 		}
@@ -436,7 +436,7 @@ static int find_common(struct fetch_pack_args *args,
 			if (skip_prefix(line, "unshallow ", &arg)) {
 				if (get_oid_hex(arg, &oid))
 					die(_("invalid unshallow line: %s"), line);
-				if (!lookup_object(oid.hash))
+				if (!lookup_object(the_repository, oid.hash))
 					die(_("object not found: %s"), line);
 				/* make sure that it is parsed as shallow */
 				if (!parse_object(the_repository, &oid))
@@ -801,7 +801,8 @@ static int everything_local(struct fetch_pack_args *args,
 		 * Don't mark them common yet; the server has to be told so first.
 		 */
 		for (ref = *refs; ref; ref = ref->next) {
-			struct object *o = deref_tag(lookup_object(ref->old_oid.hash),
+			struct object *o = deref_tag(lookup_object(the_repository,
+						     ref->old_oid.hash),
 						     NULL, 0);
 
 			if (!o || o->type != OBJ_COMMIT || !(o->flags & COMPLETE))
@@ -821,7 +822,7 @@ static int everything_local(struct fetch_pack_args *args,
 		const struct object_id *remote = &ref->old_oid;
 		struct object *o;
 
-		o = lookup_object(remote->hash);
+		o = lookup_object(the_repository, remote->hash);
 		if (!o || !(o->flags & COMPLETE)) {
 			retval = 0;
 			print_verbose(args, "want %s (%s)", oid_to_hex(remote),
@@ -1120,7 +1121,7 @@ static void add_wants(const struct ref *wants, struct strbuf *req_buf)
 		 * interested in the case we *know* the object is
 		 * reachable and we have already scanned it.
 		 */
-		if (((o = lookup_object(remote->hash)) != NULL) &&
+		if (((o = lookup_object(the_repository, remote->hash)) != NULL) &&
 		    (o->flags & COMPLETE)) {
 			continue;
 		}
@@ -1295,7 +1296,7 @@ static void receive_shallow_info(struct fetch_pack_args *args,
 		if (skip_prefix(reader->line, "unshallow ", &arg)) {
 			if (get_oid_hex(arg, &oid))
 				die(_("invalid unshallow line: %s"), reader->line);
-			if (!lookup_object(oid.hash))
+			if (!lookup_object(the_repository, oid.hash))
 				die(_("object not found: %s"), reader->line);
 			/* make sure that it is parsed as shallow */
 			if (!parse_object(the_repository, &oid))
diff --git a/http-push.c b/http-push.c
index 311b6295359..2615c823d60 100644
--- a/http-push.c
+++ b/http-push.c
@@ -722,7 +722,7 @@ static void one_remote_object(const struct object_id *oid)
 {
 	struct object *obj;
 
-	obj = lookup_object(oid->hash);
+	obj = lookup_object(the_repository, oid->hash);
 	if (!obj)
 		obj = parse_object(the_repository, oid);
 
diff --git a/object.c b/object.c
index 469e6126286..4de4fa58d59 100644
--- a/object.c
+++ b/object.c
@@ -84,7 +84,7 @@ static void insert_obj_hash(struct object *obj, struct object **hash, unsigned i
  * Look up the record for the given sha1 in the hash map stored in
  * obj_hash.  Return NULL if it was not found.
  */
-struct object *lookup_object(const unsigned char *sha1)
+struct object *lookup_object_the_repository(const unsigned char *sha1)
 {
 	unsigned int i, first;
 	struct object *obj;
@@ -179,7 +179,7 @@ void *object_as_type(struct object *obj, enum object_type type, int quiet)
 
 struct object *lookup_unknown_object(const unsigned char *sha1)
 {
-	struct object *obj = lookup_object(sha1);
+	struct object *obj = lookup_object(the_repository, sha1);
 	if (!obj)
 		obj = create_object(the_repository, sha1,
 				    alloc_object_node(the_repository));
@@ -255,7 +255,7 @@ struct object *parse_object_the_repository(const struct object_id *oid)
 	void *buffer;
 	struct object *obj;
 
-	obj = lookup_object(oid->hash);
+	obj = lookup_object(the_repository, oid->hash);
 	if (obj && obj->parsed)
 		return obj;
 
@@ -267,7 +267,7 @@ struct object *parse_object_the_repository(const struct object_id *oid)
 			return NULL;
 		}
 		parse_blob_buffer(lookup_blob(oid), NULL, 0);
-		return lookup_object(oid->hash);
+		return lookup_object(the_repository, oid->hash);
 	}
 
 	buffer = read_object_file(oid, &type, &size);
diff --git a/object.h b/object.h
index f69095d3dde..fa41d711f44 100644
--- a/object.h
+++ b/object.h
@@ -110,7 +110,8 @@ extern struct object *get_indexed_object(unsigned int);
  * half-initialised objects, the caller is expected to initialize them
  * by calling parse_object() on them.
  */
-struct object *lookup_object(const unsigned char *sha1);
+#define lookup_object(r, s) lookup_object_##r(s)
+struct object *lookup_object_the_repository(const unsigned char *sha1);
 
 extern void *create_object(struct repository *r, const unsigned char *sha1, void *obj);
 
diff --git a/reachable.c b/reachable.c
index ffb976c33c6..2ee55695595 100644
--- a/reachable.c
+++ b/reachable.c
@@ -108,7 +108,7 @@ static int add_recent_loose(const struct object_id *oid,
 			    const char *path, void *data)
 {
 	struct stat st;
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 
 	if (obj && obj->flags & SEEN)
 		return 0;
@@ -133,7 +133,7 @@ static int add_recent_packed(const struct object_id *oid,
 			     struct packed_git *p, uint32_t pos,
 			     void *data)
 {
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 
 	if (obj && obj->flags & SEEN)
 		return 0;
diff --git a/tag.c b/tag.c
index 7d282df0697..1b95eb9f07f 100644
--- a/tag.c
+++ b/tag.c
@@ -94,7 +94,7 @@ struct object *deref_tag_noverify(struct object *o)
 
 struct tag *lookup_tag(const struct object_id *oid)
 {
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 	if (!obj)
 		return create_object(the_repository, oid->hash,
 				     alloc_tag_node(the_repository));
diff --git a/tree.c b/tree.c
index 1033e69b590..47ecc85f90a 100644
--- a/tree.c
+++ b/tree.c
@@ -197,7 +197,7 @@ int read_tree(struct tree *tree, int stage, struct pathspec *match,
 
 struct tree *lookup_tree(const struct object_id *oid)
 {
-	struct object *obj = lookup_object(oid->hash);
+	struct object *obj = lookup_object(the_repository, oid->hash);
 	if (!obj)
 		return create_object(the_repository, oid->hash,
 				     alloc_tree_node(the_repository));
diff --git a/upload-pack.c b/upload-pack.c
index afe997c89ec..20e61180e48 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -568,7 +568,7 @@ static int get_reachable_list(struct object_array *src,
 		if (namebuf[40] != '\n' || get_oid_hex(namebuf, &sha1))
 			break;
 
-		o = lookup_object(sha1.hash);
+		o = lookup_object(the_repository, sha1.hash);
 		if (o && o->type == OBJ_COMMIT) {
 			o->flags &= ~TMP_MARK;
 		}
-- 
2.17.0.582.gccdcbd54c44.dirty
Previous: Stefan BellerNext: Stefan Beller
Message 3 of 92 in “object-store: lookup_commit”
  1. 00/35 object-store: lookup_commitStefan Beller, May 30, 2018
  2. 01/35 object: add repository argument to parse_objectStefan Beller, May 30, 2018
  3. 02/35 object: add repository argument to lookup_objectStefan Beller, May 30, 2018
  4. 04/35 object: add repository argument to parse_object_bufferStefan Beller, May 30, 2018
  5. Derrick StoleeMay 30, 2018
  6. 03/35 object: add repository argument to lookup_unknown_objectStefan Beller, May 30, 2018
  7. Derrick StoleeMay 30, 2018
  8. Duy NguyenJun 6, 2018
  9. Stefan BellerJun 13, 2018
  10. Derrick StoleeJun 14, 2018
  11. 05/35 object: add repository argument to object_as_typeStefan Beller, May 30, 2018
  12. 06/35 blob: add repository argument to lookup_blobStefan Beller, May 30, 2018
  13. Derrick StoleeMay 30, 2018
  14. 10/35 commit: add repository argument to lookup_commitStefan Beller, May 30, 2018
  15. Duy NguyenJun 14, 2018
  16. Stefan BellerJun 14, 2018
  17. Brandon WilliamsJun 14, 2018
  18. 09/35 commit: add repository argument to lookup_commit_referenceStefan Beller, May 30, 2018
  19. 08/35 commit: add repository argument to lookup_commit_reference_gentlyStefan Beller, May 30, 2018
  20. 07/35 tree: add repository argument to lookup_treeStefan Beller, May 30, 2018
  21. Duy NguyenJun 6, 2018
  22. 11/35 commit: add repository argument to parse_commit_bufferStefan Beller, May 30, 2018
  23. 12/35 commit: add repository argument to set_commit_bufferStefan Beller, May 30, 2018
  24. 25/35 tag: allow parse_tag_buffer to handle arbitrary repositoriesStefan Beller, May 30, 2018
  25. 24/35 tag: allow lookup_tag to handle arbitrary repositoriesStefan Beller, May 30, 2018
  26. 23/35 commit: allow lookup_commit to handle arbitrary repositoriesStefan Beller, May 30, 2018
  27. 26/35 commit.c: allow parse_commit_buffer to handle arbitrary repositoriesStefan Beller, May 30, 2018
  28. 22/35 tree: allow lookup_tree to handle arbitrary repositoriesStefan Beller, May 30, 2018
  29. 21/35 blob: allow lookup_blob to handle arbitrary repositoriesStefan Beller, May 30, 2018
  30. 20/35 object: allow lookup_object to handle arbitrary repositoriesStefan Beller, May 30, 2018
  31. 35/35 commit.c: allow lookup_commit_reference to handle arbitrary repositoriesStefan Beller, May 30, 2018
  32. 34/35 commit.c: allow lookup_commit_reference_gently to handle arbitrary repositoriesStefan Beller, May 30, 2018
  33. 32/35 object.c: allow parse_object to handle arbitrary repositoriesStefan Beller, May 30, 2018
  34. 31/35 object.c: allow parse_object_buffer to handle arbitrary repositoriesStefan Beller, May 30, 2018
  35. 33/35 tag.c: allow deref_tag to handle arbitrary repositoriesStefan Beller, May 30, 2018
  36. 30/35 commit.c: allow get_cached_commit_buffer to handle arbitrary repositoriesStefan Beller, May 30, 2018
  37. 29/35 commit.c: allow set_commit_buffer to handle arbitrary repositoriesStefan Beller, May 30, 2018
  38. 28/35 commit.c: migrate the commit buffer to the parsed object storeStefan Beller, May 30, 2018
  39. Duy NguyenJun 6, 2018
  40. Stefan BellerJun 13, 2018
  41. 27/35 commit-slabs: remove realloc counter outside of slab structStefan Beller, May 30, 2018
  42. Derrick StoleeMay 30, 2018
  43. 19/35 object: allow object_as_type to handle arbitrary repositoriesStefan Beller, May 30, 2018
  44. 17/35 object: add repository argument to parse_commit_gentlyStefan Beller, May 30, 2018
  45. 16/35 tag: add repository argument to deref_tagStefan Beller, May 30, 2018
  46. 14/35 tag: add repository argument to lookup_tagStefan Beller, May 30, 2018
  47. 15/35 tag: add repository argument to parse_tag_bufferStefan Beller, May 30, 2018
  48. 13/35 commit: add repository argument to get_cached_commit_bufferStefan Beller, May 30, 2018
  49. 18/35 commit: add repository argument to parse_commitStefan Beller, May 30, 2018
  50. Derrick StoleeMay 30, 2018
  51. Stefan BellerMay 30, 2018
  52. Derrick StoleeMay 30, 2018
  53. Stefan BellerMay 30, 2018
  54. 00/31 object-store: lookup_commitStefan Beller, Jun 13, 2018
  55. 01/31 object: add repository argument to lookup_objectStefan Beller, Jun 13, 2018
  56. 02/31 object: add repository argument to parse_object_bufferStefan Beller, Jun 13, 2018
  57. 03/31 object: add repository argument to object_as_typeStefan Beller, Jun 13, 2018
  58. 04/31 blob: add repository argument to lookup_blobStefan Beller, Jun 13, 2018
  59. 06/31 commit: add repository argument to lookup_commit_reference_gentlyStefan Beller, Jun 13, 2018
  60. 05/31 tree: add repository argument to lookup_treeStefan Beller, Jun 13, 2018
  61. Derrick StoleeJun 14, 2018
  62. Derrick StoleeJun 14, 2018
  63. Stefan BellerJun 14, 2018
  64. 08/31 commit: add repository argument to lookup_commitStefan Beller, Jun 13, 2018
  65. 07/31 commit: add repository argument to lookup_commit_referenceStefan Beller, Jun 13, 2018
  66. 10/31 commit: add repository argument to set_commit_bufferStefan Beller, Jun 13, 2018
  67. 12/31 tag: add repository argument to lookup_tagStefan Beller, Jun 13, 2018
  68. 13/31 tag: add repository argument to parse_tag_bufferStefan Beller, Jun 13, 2018
  69. 14/31 tag: add repository argument to deref_tagStefan Beller, Jun 13, 2018
  70. 15/31 object: allow object_as_type to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  71. 17/31 blob: allow lookup_blob to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  72. 18/31 tree: allow lookup_tree to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  73. 16/31 object: allow lookup_object to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  74. 09/31 commit: add repository argument to parse_commit_bufferStefan Beller, Jun 13, 2018
  75. 22/31 commit.c: allow parse_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  76. 23/31 commit-slabs: remove realloc counter outside of slab structStefan Beller, Jun 13, 2018
  77. 25/31 commit.c: allow set_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  78. 26/31 commit.c: allow get_cached_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  79. 27/31 object.c: allow parse_object_buffer to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  80. 29/31 tag.c: allow deref_tag to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  81. 24/31 commit.c: migrate the commit buffer to the parsed object storeStefan Beller, Jun 13, 2018
  82. 31/31 commit.c: allow lookup_commit_reference to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  83. 28/31 object.c: allow parse_object to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  84. 30/31 commit.c: allow lookup_commit_reference_gently to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  85. 11/31 commit: add repository argument to get_cached_commit_bufferStefan Beller, Jun 13, 2018
  86. 19/31 commit: allow lookup_commit to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  87. 20/31 tag: allow lookup_tag to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  88. 21/31 tag: allow parse_tag_buffer to handle arbitrary repositoriesStefan Beller, Jun 13, 2018
  89. Derrick StoleeJun 14, 2018
  90. Derrick StoleeJun 14, 2018
  91. Duy NguyenJun 14, 2018
  92. Brandon WilliamsJun 14, 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.