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

Re: [PATCH 06/35] blob: add repository argument to lookup_blob

From
Derrick Stolee <stolee@gmail.com>
Date
May 30, 2018, 18:36 UTC
Message-ID
<defafdc6-e3e2-381e-3239-926a7df43146@gmail.com>
In-Reply-To
<20180530004810.30076-7-sbeller@google.com>
On 5/29/2018 8:47 PM, Stefan Beller wrote:
Show 9 quoted lines
> Add a repository argument to allow the callers of lookup_blob
> to be more specific about which repository to act on. 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.
>
> Add the cocci patch that converted the callers.

(this is the last time I'll point this out. I'll wait until I read to the end to see if the coccinelle patch is included in the series.)

Show 246 quoted lines
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>   blob.c                   | 2 +-
>   blob.h                   | 3 ++-
>   builtin/fast-export.c    | 2 +-
>   builtin/fsck.c           | 3 ++-
>   builtin/index-pack.c     | 2 +-
>   builtin/merge-tree.c     | 3 ++-
>   builtin/unpack-objects.c | 2 +-
>   fsck.c                   | 2 +-
>   http-push.c              | 3 ++-
>   list-objects.c           | 2 +-
>   object.c                 | 4 ++--
>   reachable.c              | 2 +-
>   revision.c               | 4 ++--
>   tag.c                    | 2 +-
>   walker.c                 | 3 ++-
>   15 files changed, 22 insertions(+), 17 deletions(-)
>
> diff --git a/blob.c b/blob.c
> index dada295698c..17b9314f0a0 100644
> --- a/blob.c
> +++ b/blob.c
> @@ -5,7 +5,7 @@
>   
>   const char *blob_type = "blob";
>   
> -struct blob *lookup_blob(const struct object_id *oid)
> +struct blob *lookup_blob_the_repository(const struct object_id *oid)
>   {
>   	struct object *obj = lookup_object(the_repository, oid->hash);
>   	if (!obj)
> diff --git a/blob.h b/blob.h
> index 44606168310..08bc34487a0 100644
> --- a/blob.h
> +++ b/blob.h
> @@ -9,7 +9,8 @@ struct blob {
>   	struct object object;
>   };
>   
> -struct blob *lookup_blob(const struct object_id *oid);
> +#define lookup_blob(r, o) lookup_blob_##r(o)
> +struct blob *lookup_blob_the_repository(const struct object_id *oid);
>   
>   int parse_blob_buffer(struct blob *item, void *buffer, unsigned long size);
>   
> diff --git a/builtin/fast-export.c b/builtin/fast-export.c
> index a34ab9768f4..23ca46e6008 100644
> --- a/builtin/fast-export.c
> +++ b/builtin/fast-export.c
> @@ -237,7 +237,7 @@ static void export_blob(const struct object_id *oid)
>   
>   	if (anonymize) {
>   		buf = anonymize_blob(&size);
> -		object = (struct object *)lookup_blob(oid);
> +		object = (struct object *)lookup_blob(the_repository, oid);
>   		eaten = 0;
>   	} else {
>   		buf = read_object_file(oid, &type, &size);
> diff --git a/builtin/fsck.c b/builtin/fsck.c
> index 82a5acaf76e..6e2b204e938 100644
> --- a/builtin/fsck.c
> +++ b/builtin/fsck.c
> @@ -808,7 +808,8 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
>   			mode = active_cache[i]->ce_mode;
>   			if (S_ISGITLINK(mode))
>   				continue;
> -			blob = lookup_blob(&active_cache[i]->oid);
> +			blob = lookup_blob(the_repository,
> +					   &active_cache[i]->oid);
>   			if (!blob)
>   				continue;
>   			obj = &blob->object;
> diff --git a/builtin/index-pack.c b/builtin/index-pack.c
> index 0dd10693597..51c5244a15a 100644
> --- a/builtin/index-pack.c
> +++ b/builtin/index-pack.c
> @@ -832,7 +832,7 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
>   	if (strict || do_fsck_object) {
>   		read_lock();
>   		if (type == OBJ_BLOB) {
> -			struct blob *blob = lookup_blob(oid);
> +			struct blob *blob = lookup_blob(the_repository, oid);
>   			if (blob)
>   				blob->object.flags |= FLAG_CHECKED;
>   			else
> diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
> index 8a8d5797520..f8023bae1e2 100644
> --- a/builtin/merge-tree.c
> +++ b/builtin/merge-tree.c
> @@ -2,6 +2,7 @@
>   #include "tree-walk.h"
>   #include "xdiff-interface.h"
>   #include "object-store.h"
> +#include "repository.h"
>   #include "blob.h"
>   #include "exec-cmd.h"
>   #include "merge-blobs.h"
> @@ -170,7 +171,7 @@ static struct merge_list *create_entry(unsigned stage, unsigned mode, const stru
>   	res->stage = stage;
>   	res->path = path;
>   	res->mode = mode;
> -	res->blob = lookup_blob(oid);
> +	res->blob = lookup_blob(the_repository, oid);
>   	return res;
>   }
>   
> diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
> index 8e454c48649..dfea7790fde 100644
> --- a/builtin/unpack-objects.c
> +++ b/builtin/unpack-objects.c
> @@ -254,7 +254,7 @@ static void write_object(unsigned nr, enum object_type type,
>   		added_object(nr, type, buf, size);
>   		free(buf);
>   
> -		blob = lookup_blob(&obj_list[nr].oid);
> +		blob = lookup_blob(the_repository, &obj_list[nr].oid);
>   		if (blob)
>   			blob->object.flags |= FLAG_WRITTEN;
>   		else
> diff --git a/fsck.c b/fsck.c
> index f9476f56e93..2d372f2a3f3 100644
> --- a/fsck.c
> +++ b/fsck.c
> @@ -367,7 +367,7 @@ static int fsck_walk_tree(struct tree *tree, void *data, struct fsck_options *op
>   			result = options->walk(obj, OBJ_TREE, data, options);
>   		}
>   		else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode)) {
> -			obj = (struct object *)lookup_blob(entry.oid);
> +			obj = (struct object *)lookup_blob(the_repository, entry.oid);
>   			if (name && obj)
>   				put_object_name(options, obj, "%s%s", name,
>   					entry.path);
> diff --git a/http-push.c b/http-push.c
> index 04d95bd5da8..730e9cd0667 100644
> --- a/http-push.c
> +++ b/http-push.c
> @@ -1314,7 +1314,8 @@ static struct object_list **process_tree(struct tree *tree,
>   			p = process_tree(lookup_tree(entry.oid), p);
>   			break;
>   		case OBJ_BLOB:
> -			p = process_blob(lookup_blob(entry.oid), p);
> +			p = process_blob(lookup_blob(the_repository, entry.oid),
> +					 p);
>   			break;
>   		default:
>   			/* Subproject commit - not in this repository */
> diff --git a/list-objects.c b/list-objects.c
> index 7ae0eb8ebc7..56682c2a441 100644
> --- a/list-objects.c
> +++ b/list-objects.c
> @@ -167,7 +167,7 @@ static void process_tree(struct rev_info *revs,
>   					cb_data);
>   		else
>   			process_blob(revs,
> -				     lookup_blob(entry.oid),
> +				     lookup_blob(the_repository, entry.oid),
>   				     show, base, entry.path,
>   				     cb_data, filter_fn, filter_data);
>   	}
> diff --git a/object.c b/object.c
> index bd5df7d007a..80a8e44832f 100644
> --- a/object.c
> +++ b/object.c
> @@ -193,7 +193,7 @@ struct object *parse_object_buffer_the_repository(const struct object_id *oid, e
>   
>   	obj = NULL;
>   	if (type == OBJ_BLOB) {
> -		struct blob *blob = lookup_blob(oid);
> +		struct blob *blob = lookup_blob(the_repository, oid);
>   		if (blob) {
>   			if (parse_blob_buffer(blob, buffer, size))
>   				return NULL;
> @@ -266,7 +266,7 @@ struct object *parse_object_the_repository(const struct object_id *oid)
>   			error("sha1 mismatch %s", oid_to_hex(oid));
>   			return NULL;
>   		}
> -		parse_blob_buffer(lookup_blob(oid), NULL, 0);
> +		parse_blob_buffer(lookup_blob(the_repository, oid), NULL, 0);
>   		return lookup_object(the_repository, oid->hash);
>   	}
>   
> diff --git a/reachable.c b/reachable.c
> index 2ee55695595..cc25f012e5d 100644
> --- a/reachable.c
> +++ b/reachable.c
> @@ -91,7 +91,7 @@ static void add_recent_object(const struct object_id *oid,
>   		obj = (struct object *)lookup_tree(oid);
>   		break;
>   	case OBJ_BLOB:
> -		obj = (struct object *)lookup_blob(oid);
> +		obj = (struct object *)lookup_blob(the_repository, oid);
>   		break;
>   	default:
>   		die("unknown object type for %s: %s",
> diff --git a/revision.c b/revision.c
> index f051c6c5806..aeccbf5fe24 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -69,7 +69,7 @@ static void mark_tree_contents_uninteresting(struct tree *tree)
>   			mark_tree_uninteresting(lookup_tree(entry.oid));
>   			break;
>   		case OBJ_BLOB:
> -			mark_blob_uninteresting(lookup_blob(entry.oid));
> +			mark_blob_uninteresting(lookup_blob(the_repository, entry.oid));
>   			break;
>   		default:
>   			/* Subproject commit - not in this repository */
> @@ -1338,7 +1338,7 @@ static void do_add_index_objects_to_pending(struct rev_info *revs,
>   		if (S_ISGITLINK(ce->ce_mode))
>   			continue;
>   
> -		blob = lookup_blob(&ce->oid);
> +		blob = lookup_blob(the_repository, &ce->oid);
>   		if (!blob)
>   			die("unable to add index blob to traversal");
>   		add_pending_object_with_path(revs, &blob->object, "",
> diff --git a/tag.c b/tag.c
> index a14a4f23037..a31ae75e960 100644
> --- a/tag.c
> +++ b/tag.c
> @@ -154,7 +154,7 @@ int parse_tag_buffer(struct tag *item, const void *data, unsigned long size)
>   	bufptr = nl + 1;
>   
>   	if (!strcmp(type, blob_type)) {
> -		item->tagged = (struct object *)lookup_blob(&oid);
> +		item->tagged = (struct object *)lookup_blob(the_repository, &oid);
>   	} else if (!strcmp(type, tree_type)) {
>   		item->tagged = (struct object *)lookup_tree(&oid);
>   	} else if (!strcmp(type, commit_type)) {
> diff --git a/walker.c b/walker.c
> index aea96f0eaff..a36f53f37be 100644
> --- a/walker.c
> +++ b/walker.c
> @@ -54,7 +54,8 @@ static int process_tree(struct walker *walker, struct tree *tree)
>   				obj = &tree->object;
>   		}
>   		else {
> -			struct blob *blob = lookup_blob(entry.oid);
> +			struct blob *blob = lookup_blob(the_repository,
> +							entry.oid);
>   			if (blob)
>   				obj = &blob->object;
>   		}
Previous: Stefan BellerNext: Stefan Beller
Message 13 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.