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

Re: [PATCH v5 1/2] cat-file: add mailmap support to -s option

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 21, 2022, 11:27 UTC
Message-ID
<221121.867czoczdr.gmgdl@evledraar.gmail.com>
In-Reply-To
<CAP8UFD1CB90eoWpQmGJbfxK7uHX0-u4BuSE-v=mD1yuW+nnAxA@mail.gmail.com>
On Mon, Nov 21 2022, Christian Couder wrote:
Show 29 quoted lines
> On Mon, Nov 21, 2022 at 8:27 AM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> Siddharth Asthana <siddharthasthana31@gmail.com> writes:
>>
>> > +test_expect_success 'git cat-file -s returns correct size with --use-mailmap' '
>> > +     test_when_finished "rm .mailmap" &&
>> > +     cat >.mailmap <<-\EOF &&
>> > +     C O Mitter <committer@example.com> Orig <orig@example.com>
>> > +     EOF
>> > +     git cat-file commit HEAD | wc -c >expect &&
>> > +     git cat-file --use-mailmap commit HEAD | wc -c >>expect &&
>> > +     git cat-file -s HEAD >actual &&
>> > +     git cat-file --use-mailmap -s HEAD >>actual &&
>>
>> Doesn't this break under macOS where wc output tends to be padded
>> with SP on the right?  We used to often see test breakage when a
>> carelessly written test like
>>
>>         test "$(wc -l <outout)" = 2
>>
>> which expects the output file to have exactly two files (the
>> solution in this sample case is to lose the double quotes around the
>> command substitution).
>
> I guess that's the reason why `wc -c | sed -e 's/^ *//'` is used in
> the strlen() function in t1006-cat-file.sh. There are a number of
> places in the tests where wc -c or wc -l are used without piping the
> result into sed -e 's/^ *//' though. So it's not easy to understand
> why it's sometimes needed.

It's because in "t1006-cat-file.sh" we're assigning the "wc -c" to a variable, because it's used to "test_cmp" the number of bytes in some free-form text.

It would be nicer to split "test_line_count" into some utility function that knew how to parse out "wc -l", "wc -c" etc. for a given input file, and return that as a string.

In that case the "sed" isn't needed, and we're just (ab)using it to do
things we can do with whitespace managent + shell built-ins. E.g. this
works too (the "echo; echo; echo" showing that we're stripping out
whitespace "wc -c" might emit:
	
	diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh
	index 23b8942edba..9ae4b534421 100755
	--- a/t/t1006-cat-file.sh
	+++ b/t/t1006-cat-file.sh
	@@ -106,7 +106,7 @@ echo_without_newline_nul () {
	 }
	 
	 strlen () {
	-    echo_without_newline "$1" | wc -c | sed -e 's/^ *//'
	+    printf "%s" $(printf "%s" "$1" | (echo ; echo ; echo ; wc -c))
	 }
	 
	 maybe_remove_timestamp () {
Previous: Junio C HamanoNext: Siddharth Asthana
Message 32 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.