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

Re: [PATCH v3 10/32] commit: add repository argument to parse_commit_buffer

From
Derrick Stolee <stolee@gmail.com>
Date
Jun 29, 2018, 14:49 UTC
Message-ID
<c893b789-ea0b-7c84-c730-b156ecb605be@gmail.com>
In-Reply-To
<20180629012222.167426-11-sbeller@google.com>
On 6/28/2018 9:22 PM, Stefan Beller wrote:
Show 53 quoted lines
> Add a repository argument to allow the callers of parse_commit_buffer
> 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.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>   commit.c    | 4 ++--
>   commit.h    | 3 ++-
>   object.c    | 2 +-
>   sha1-file.c | 2 +-
>   4 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/commit.c b/commit.c
> index 4803c8be1df..75d0bdede84 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -363,7 +363,7 @@ const void *detach_commit_buffer(struct commit *commit, unsigned long *sizep)
>   	return ret;
>   }
>   
> -int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size, int check_graph)
> +int parse_commit_buffer_the_repository(struct commit *item, const void *buffer, unsigned long size, int check_graph)
>   {
>   	const char *tail = buffer;
>   	const char *bufptr = buffer;
> @@ -448,7 +448,7 @@ int parse_commit_gently(struct commit *item, int quiet_on_missing)
>   		return error("Object %s not a commit",
>   			     oid_to_hex(&item->object.oid));
>   	}
> -	ret = parse_commit_buffer(item, buffer, size, 0);
> +	ret = parse_commit_buffer(the_repository, item, buffer, size, 0);
>   	if (save_commit_buffer && !ret) {
>   		set_commit_buffer(item, buffer, size);
>   		return 0;
> diff --git a/commit.h b/commit.h
> index cd80dab59c1..f326c13622b 100644
> --- a/commit.h
> +++ b/commit.h
> @@ -82,7 +82,8 @@ struct commit *lookup_commit_reference_by_name(const char *name);
>    */
>   struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref_name);
>   
> -int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size, int check_graph);
> +#define parse_commit_buffer(r, i, b, s, g) parse_commit_buffer_##r(i, b, s, g)
> +int parse_commit_buffer_the_repository(struct commit *item, const void *buffer, unsigned long size, int check_graph);
>   int parse_commit_gently(struct commit *item, int quiet_on_missing);
>   static inline int parse_commit(struct commit *item)
>   {

This part also conflicts with ds/commit-graph-fsck because I added a 'parse_commit_internal' between parse_commit_buffer() and parse_commit_gently(). Likely, you'll want to add a repository struct to that method, too.

That series also adds new callers to parse_commit_buffer().
Show 26 quoted lines
> diff --git a/object.c b/object.c
> index 530c55e41e4..5494c0cbaa1 100644
> --- a/object.c
> +++ b/object.c
> @@ -214,7 +214,7 @@ struct object *parse_object_buffer_the_repository(const struct object_id *oid, e
>   	} else if (type == OBJ_COMMIT) {
>   		struct commit *commit = lookup_commit(the_repository, oid);
>   		if (commit) {
> -			if (parse_commit_buffer(commit, buffer, size, 1))
> +			if (parse_commit_buffer(the_repository, commit, buffer, size, 1))
>   				return NULL;
>   			if (!get_cached_commit_buffer(commit, NULL)) {
>   				set_commit_buffer(commit, buffer, size);
> diff --git a/sha1-file.c b/sha1-file.c
> index de4839e634c..75ba30b4ab1 100644
> --- a/sha1-file.c
> +++ b/sha1-file.c
> @@ -1801,7 +1801,7 @@ static void check_commit(const void *buf, size_t size)
>   {
>   	struct commit c;
>   	memset(&c, 0, sizeof(c));
> -	if (parse_commit_buffer(&c, buf, size, 0))
> +	if (parse_commit_buffer(the_repository, &c, buf, size, 0))
>   		die("corrupt commit");
>   }
>   
Previous: Stefan BellerNext: Stefan Beller
Message 9 of 42 in “object-store: lookup_commit”
  1. 00/32 object-store: lookup_commitStefan Beller, Jun 29, 2018
  2. 02/32 object: add repository argument to lookup_objectStefan Beller, Jun 29, 2018
  3. 01/32 object: add repository argument to parse_objectStefan Beller, Jun 29, 2018
  4. 03/32 object: add repository argument to parse_object_bufferStefan Beller, Jun 29, 2018
  5. 05/32 blob: add repository argument to lookup_blobStefan Beller, Jun 29, 2018
  6. 04/32 object: add repository argument to object_as_typeStefan Beller, Jun 29, 2018
  7. 08/32 commit: add repository argument to lookup_commit_referenceStefan Beller, Jun 29, 2018
  8. 10/32 commit: add repository argument to parse_commit_bufferStefan Beller, Jun 29, 2018
  9. Derrick StoleeJun 29, 2018
  10. 06/32 tree: add repository argument to lookup_treeStefan Beller, Jun 29, 2018
  11. 11/32 commit: add repository argument to set_commit_bufferStefan Beller, Jun 29, 2018
  12. 12/32 commit: add repository argument to get_cached_commit_bufferStefan Beller, Jun 29, 2018
  13. 14/32 tag: add repository argument to parse_tag_bufferStefan Beller, Jun 29, 2018
  14. 15/32 tag: add repository argument to deref_tagStefan Beller, Jun 29, 2018
  15. 16/32 object: allow object_as_type to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  16. 17/32 object: allow lookup_object to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  17. 18/32 blob: allow lookup_blob to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  18. 19/32 tree: allow lookup_tree to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  19. 20/32 commit: allow lookup_commit to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  20. 21/32 tag: allow lookup_tag to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  21. 23/32 commit.c: allow parse_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  22. 24/32 commit-slabs: remove realloc counter outside of slab structStefan Beller, Jun 29, 2018
  23. 25/32 commit.c: migrate the commit buffer to the parsed object storeStefan Beller, Jun 29, 2018
  24. 26/32 commit.c: allow set_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  25. 28/32 object.c: allow parse_object_buffer to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  26. 30/32 tag.c: allow deref_tag to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  27. 29/32 object.c: allow parse_object to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  28. 31/32 commit.c: allow lookup_commit_reference_gently to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  29. 32/32 commit.c: allow lookup_commit_reference to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  30. 22/32 tag: allow parse_tag_buffer to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  31. 27/32 commit.c: allow get_cached_commit_buffer to handle arbitrary repositoriesStefan Beller, Jun 29, 2018
  32. 07/32 commit: add repository argument to lookup_commit_reference_gentlyStefan Beller, Jun 29, 2018
  33. 09/32 commit: add repository argument to lookup_commitStefan Beller, Jun 29, 2018
  34. Derrick StoleeJun 29, 2018
  35. 13/32 tag: add repository argument to lookup_tagStefan Beller, Jun 29, 2018
  36. Derrick StoleeJun 29, 2018
  37. Junio C HamanoJun 29, 2018
  38. Junio C HamanoJun 29, 2018
  39. Stefan BellerJun 29, 2018
  40. Junio C HamanoJun 29, 2018
  41. Brandon WilliamsJun 29, 2018
  42. Junio C HamanoJul 3, 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.