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

Re: [PATCH 3/3] cat-file: add mailmap support to --batch-check option

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 16, 2022, 22:35 UTC
Message-ID
<xmqq35creymz.fsf@gitster.g>
In-Reply-To
<20220916205946.178925-4-siddharthasthana31@gmail.com>
Siddharth Asthana <siddharthasthana31@gmail.com> writes:
Show 10 quoted lines
> Using `git cat-file --use-mailmap` with --batch-check option, like the
> following is allowed:
>
>  git cat-file --use-mailmap -batch-check
>
> The current implementation will return the same object size irrespective
> of the mailmap option, which is not as useful as it could be. When we
> use the mailmap mechanism to replace the idents, the size of the object
> can change and --batch-check option would be more useful if it shows the
> size of the changed object. This patch implements that.
Almost the same comment on the proposed log message as [2/3].
Show 38 quoted lines
> diff --git a/builtin/cat-file.c b/builtin/cat-file.c
> index 9942b93867..93d127d687 100644
> --- a/builtin/cat-file.c
> +++ b/builtin/cat-file.c
> @@ -424,6 +424,12 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
>  
>  static void print_default_format(struct strbuf *scratch, struct expand_data *data)
>  {
> +	if (use_mailmap && (data->type == OBJ_COMMIT || data->type == OBJ_TAG)) {
> +		size_t s = data->size;
> +		*data->info.contentp = replace_idents_using_mailmap((char*)*data->info.contentp, &s);
> +		data->size = cast_size_t_to_ulong(s);
> +	}
> +
>  	strbuf_addf(scratch, "%s %s %"PRIuMAX"\n", oid_to_hex(&data->oid),
>  		    type_name(data->type),
>  		    (uintmax_t)data->size);
> @@ -441,9 +447,14 @@ static void batch_object_write(const char *obj_name,
>  			       struct packed_git *pack,
>  			       off_t offset)
>  {
> +	void *buf = NULL;
> +
>  	if (!data->skip_object_info) {
>  		int ret;
>  
> +		if (use_mailmap)
> +			data->info.contentp = &buf;
> +
>  		if (pack)
>  			ret = packed_object_info(the_repository, pack, offset,
>  						 &data->info);
> @@ -474,6 +485,8 @@ static void batch_object_write(const char *obj_name,
>  		print_object_or_die(opt, data);
>  		batch_write(opt, "\n", 1);
>  	}
> +
> +	free(buf);

OK. Do we have _any_ idea what kind of object this is upon entry to this function so that we can avoid populating .contentp for say a huge blob object? Of course, we could probe for type without loading the contents, something like the attached sketch. Usually the blobs and trees are far larger than commits and tags and more expensive to materialize in core (especially because trees delta so well), so avoiding the cost to do so may worth it. I dunno.

diff --git i/builtin/cat-file.c w/builtin/cat-file.c
index 989eee0bb4..562691eb1e 100644
--- i/builtin/cat-file.c
+++ w/builtin/cat-file.c
@@ -431,6 +431,9 @@ static void batch_object_write(const char *obj_name,
 	if (!data->skip_object_info) {
 		int ret;
 
+		if (use_mailmap && !data->info.typep)
+			data->info.typep = &data.type;
+
 		if (pack)
 			ret = packed_object_info(the_repository, pack, offset,
 						 &data->info);
@@ -444,8 +447,14 @@ static void batch_object_write(const char *obj_name,
 			fflush(stdout);
 			return;
 		}
-	}
 
+		if (use_mailmap && 
+		    (*(data->info.typep) == OBJ_COMMIT ||
+		    (*data->info.typep) == OBJ_TAG)) {
+			... load the contents here ...;
+			... replace idents with mailmap ...;
+		}
+	}
 	strbuf_reset(scratch);
 
 	if (!opt->format) {
Previous: Siddharth AsthanaNext: Siddharth Asthana
Message 7 of 44 in “Add mailmap mechanism in --batch-check options”
  1. 0/3 Add mailmap mechanism in --batch-check optionsSiddharth Asthana, Sep 16, 2022
  2. 2/3 cat-file: add mailmap support to -s optionSiddharth Asthana, Sep 16, 2022
  3. Junio C HamanoSep 16, 2022
  4. 1/3 doc/cat-file: allow --use-mailmap for --batch optionsSiddharth Asthana, Sep 16, 2022
  5. Junio C HamanoSep 16, 2022
  6. 3/3 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Sep 16, 2022
  7. Junio C HamanoSep 16, 2022
  8. 0/2 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Sep 26, 2022
  9. 1/2 cat-file: add mailmap support to -s optionSiddharth Asthana, Sep 26, 2022
  10. Ævar Arnfjörð BjarmasonSep 26, 2022
  11. Ævar Arnfjörð BjarmasonSep 26, 2022
  12. 2/2 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Sep 26, 2022
  13. 0/2 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Oct 29, 2022
  14. 1/2 cat-file: add mailmap support to -s optionSiddharth Asthana, Oct 29, 2022
  15. Christian CouderOct 31, 2022
  16. 2/2 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Oct 29, 2022
  17. Christian CouderOct 31, 2022
  18. Taylor BlauOct 29, 2022
  19. 0/3 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Nov 13, 2022
  20. 1/3 cat-file: add mailmap support to -s optionSiddharth Asthana, Nov 13, 2022
  21. 2/3 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Nov 13, 2022
  22. Taylor BlauNov 15, 2022
  23. 3/3 doc/cat-file: allow --use-mailmap for --batch optionsSiddharth Asthana, Nov 13, 2022
  24. Christian CouderNov 14, 2022
  25. Taylor BlauNov 14, 2022
  26. Siddharth AsthanaNov 20, 2022
  27. 0/2 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Nov 20, 2022
  28. 1/2 cat-file: add mailmap support to -s optionSiddharth Asthana, Nov 20, 2022
  29. Junio C HamanoNov 21, 2022
  30. Christian CouderNov 21, 2022
  31. Junio C HamanoNov 21, 2022
  32. Ævar Arnfjörð BjarmasonNov 21, 2022
  33. 2/2 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Nov 20, 2022
  34. Junio C HamanoNov 21, 2022
  35. Junio C HamanoNov 30, 2022
  36. 0/2 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Dec 1, 2022
  37. 1/2 cat-file: add mailmap support to -s optionSiddharth Asthana, Dec 1, 2022
  38. 2/2 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Dec 1, 2022
  39. Ævar Arnfjörð BjarmasonDec 14, 2022
  40. Christian CouderDec 14, 2022
  41. 0/2 Add mailmap mechanism in cat-file optionsSiddharth Asthana, Dec 20, 2022
  42. 1/2 cat-file: add mailmap support to -s optionSiddharth Asthana, Dec 20, 2022
  43. 2/2 cat-file: add mailmap support to --batch-check optionSiddharth Asthana, Dec 20, 2022
  44. Ævar Arnfjörð BjarmasonDec 20, 2022

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.