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

Re: [PATCH 1/2] repack: respect kept objects with '--write-midx -b'

From
Derrick Stolee <stolee@gmail.com>
Date
Dec 20, 2021, 13:40 UTC
Message-ID
<d10662af-4ce9-6944-aa73-ef344f6bdf67@gmail.com>
In-Reply-To
<YbzHtsl045XZbJGN@coredump.intra.peff.net>
On 12/17/2021 12:24 PM, Jeff King wrote:
> On Fri, Dec 17, 2021 at 04:28:45PM +0000, Derrick Stolee via GitGitGadget wrote:
...
Show 53 quoted lines
>> +test_expect_success '--write-midx -b packs non-kept objects' '
>> +	git init midx-kept &&
>> +	test_when_finished "rm -fr midx-kept" &&
>> +	(
>> +		cd midx-kept &&
>> +		test_commit_bulk 100 &&
>> +		GIT_TRACE2_EVENT="$(pwd)/trace.txt" \
>> +			git repack --write-midx -a -b &&
>> +		cat trace.txt | \
>> +			grep \"event\":\"start\" | \
>> +			grep pack-objects | \
>> +			grep \"--honor-pack-keep\"
>> +	)
>> +'
> 
> This looks correct, though:
> 
>   - do we really need this separate repo directory? The test before it
>     uses one, but only because it needs a very specific set of commits.
>     There is a long-running "midx" directory we could use, though I
>     think just the regular test repo would be fine, too.
> 
>   - likewise, do we need 100 commits? They are not too expensive these
>     days with test_commit_bulk, but I think we don't even care about the
>     repo contents at all.
> 
>   - there is no actual .keep file in your test. That's OK, as we are
>     just checking the args passed to pack-objects.
> 
>   - useless use of cat. :) Also, you could probably do it all with one
>     grep. This is bikeshedding, of course, but it's nice to keep process
>     counts low in the test suite. Also, your middle grep is looser than
>     the others (it doesn't check for surrounding quotes).
> 
> So something like this would work:
> 
>   test_expect_success '--write-midx -b packs non-kept objects' '
>           GIT_TRACE2_EVENT="$(pwd)/midx-keep-bitmap.trace" \
>                   git -C midx repack --write-midx -a -b &&
>           grep "\"event\":\"start\".*\"pack-objects\".*\"--honor-pack-keep\"" \
>                   midx-keep-bitmap.trace
>   '
> 
> One could perhaps argue that the combined grep is less readable. If
> that's a concern, I'd suggest wrapping it in a function like:
> 
>   # usage: check_trace2_arg <trace_file> <cmd> <arg>
>   check_trace2_arg () {
> 	grep "\"event\":\"start\".*\"$2\".*\"$3\"" "$1"
>   }
> 
> All just suggestions, of course. I'd be happy enough to see the patch go
> in as-is.

Thanks for the suggestions. I decided to adapt the 'test_subcommand' helper into a 'test_subcommand_inexact' helper. The existing helper requires the full argument list in exact order, but the new one only cares about the given arguments (in that relative order).

Thanks, -Stolee

Previous: Jeff KingNext: Jeff King
Message 4 of 17 in “Two small 'git repack' fixes”
  1. 0/2 Two small 'git repack' fixesDerrick Stolee via GitGitGadget, Dec 17, 2021
  2. 1/2 repack: respect kept objects with '--write-midx -b'Derrick Stolee via GitGitGadget, Dec 17, 2021
  3. Jeff KingDec 17, 2021
  4. Derrick StoleeDec 20, 2021
  5. Jeff KingDec 20, 2021
  6. Ævar Arnfjörð BjarmasonDec 18, 2021
  7. 2/2 repack: make '--quiet' disable progressDerrick Stolee via GitGitGadget, Dec 17, 2021
  8. Jeff KingDec 17, 2021
  9. Derrick StoleeDec 20, 2021
  10. Jeff KingDec 20, 2021
  11. Derrick StoleeDec 20, 2021
  12. Ævar Arnfjörð BjarmasonDec 18, 2021
  13. Derrick StoleeDec 20, 2021
  14. 0/2 Two small 'git repack' fixesDerrick Stolee via GitGitGadget, Dec 20, 2021
  15. 2/2 repack: make '--quiet' disable progressDerrick Stolee via GitGitGadget, Dec 20, 2021
  16. 1/2 repack: respect kept objects with '--write-midx -b'Derrick Stolee via GitGitGadget, Dec 20, 2021
  17. Ævar Arnfjörð BjarmasonDec 20, 2021

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.