On Thu, Mar 24, 2022 at 11:42:44AM -0400, Derrick Stolee wrote: > As I'm looking at Taylor's test case example, the one thing I notice > is that there is only one pack-file before the repack. It would be > good to have a non-kept packfile get repacked in the process, not > just the loose objects added by the test_commit. I'll take a look at > what can be done here. I think you are too good at nerd-sniping me ;-). Here's a more robust test, that I think reads a little cleaner than the previous round. Let me know what you think: --- 8< --- diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 5922fb5bdd..1ed9a98a36 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -369,10 +369,36 @@ test_expect_success '--write-midx with preferred bitmap tips' ' ) ' +packdir=$objdir/pack + test_expect_success '--write-midx -b packs non-kept objects' ' - GIT_TRACE2_EVENT="$(pwd)/trace.txt" \ - git repack --write-midx -a -b && - test_subcommand_inexact git pack-objects --honor-pack-keep <trace.txt + git init repo && + test_when_finished "rm -fr repo" && + ( + cd repo && + + test_commit kept && + git repack -ad && + + >$packdir/$(basename $packdir/pack-*.pack .pack).keep && + + test_commit unkept && + git repack -d && + + test_commit new && + + find $packdir -type f -name "pack-*.idx" | sort >before && + git repack --write-midx -a -b -d && + find $packdir -type f -name "pack-*.idx" | sort >after && + + git rev-list --objects --no-object-names kept.. >expect.raw && + sort expect.raw >expect && + + git show-index <$(comm -13 before after) >actual.raw && + cut -d" " -f2 actual.raw >actual && + + test_cmp expect actual + ) ' test_expect_success TTY '--quiet disables progress' ' --- >8 --- Thanks, Taylor