Re: [PATCH 16/22] t5326: test multi-pack bitmap behavior
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- May 4, 2021, 17:51 UTC
- Message-ID
- <20210504175125.2987651-1-jonathantanmy@google.com>
- In-Reply-To
- <ff74181e85975690b4fccfb6b72fb80045f4adc7.1617991824.git.me@ttaylorr.com>
Show 8 quoted lines
> +test_expect_success 'clone with bitmaps enabled' ' > + git clone --no-local --bare . clone-reverse-delta.git && > + test_when_finished "rm -fr clone-reverse-delta.git" && > + > + git rev-parse HEAD >expect && > + git --git-dir=clone-reverse-delta.git rev-parse HEAD >actual && > + test_cmp expect actual > +'
What is this test testing? That bitmaps are used? (I'm not sure how to verify that though - we seem to have tracing for bitmap writing but not for reading, for example.)
Show 52 quoted lines
> +bitmap_reuse_tests() {
> + from=$1
> + to=$2
> +
> + test_expect_success "setup pack reuse tests ($from -> $to)" '
> + rm -fr repo &&
> + git init repo &&
> + (
> + cd repo &&
> + test_commit_bulk 16 &&
> + git tag old-tip &&
> +
> + git config core.multiPackIndex true &&
> + if test "MIDX" = "$from"
> + then
> + GIT_TEST_MULTI_PACK_INDEX=0 git repack -Ad &&
> + git multi-pack-index write --bitmap
> + else
> + GIT_TEST_MULTI_PACK_INDEX=0 git repack -Adb
> + fi
> + )
> + '
> +
> + test_expect_success "build bitmap from existing ($from -> $to)" '
> + (
> + cd repo &&
> + test_commit_bulk --id=further 16 &&
> + git tag new-tip &&
> +
> + if test "MIDX" = "$to"
> + then
> + GIT_TEST_MULTI_PACK_INDEX=0 git repack -d &&
> + git multi-pack-index write --bitmap
> + else
> + GIT_TEST_MULTI_PACK_INDEX=0 git repack -Adb
> + fi
> + )
> + '
> +
> + test_expect_success "verify resulting bitmaps ($from -> $to)" '
> + (
> + cd repo &&
> + git for-each-ref &&
> + git rev-list --test-bitmap refs/tags/old-tip &&
> + git rev-list --test-bitmap refs/tags/new-tip
> + )
> + '
> +}
> +
> +bitmap_reuse_tests 'pack' 'MIDX'
> +bitmap_reuse_tests 'MIDX' 'pack'
> +bitmap_reuse_tests 'MIDX' 'MIDX'Is it possible to verify that the bitmaps have truly been reused (and not, say, created from scratch)? (E.g. is there any nature of the bitmap created - for example, the order of commits?)
Show 37 quoted lines
> +test_expect_success 'pack.preferBitmapTips' ' > + git init repo && > + test_when_finished "rm -fr repo" && > + ( > + cd repo && > + > + test_commit_bulk --message="%s" 103 && > + > + git log --format="%H" >commits.raw && > + sort <commits.raw >commits && > + > + git log --format="create refs/tags/%s %H" HEAD >refs && > + git update-ref --stdin <refs && > + > + git multi-pack-index write --bitmap && > + test_path_is_file $midx && > + test_path_is_file $midx-$(midx_checksum $objdir).bitmap && > + > + test-tool bitmap list-commits | sort >bitmaps && > + comm -13 bitmaps commits >before && > + test_line_count = 1 before && > + > + perl -ne "printf(\"create refs/tags/include/%d \", $.); print" \ > + <before | git update-ref --stdin && > + > + rm -fr $midx-$(midx_checksum $objdir).bitmap && > + rm -fr $midx-$(midx_checksum $objdir).rev && > + rm -fr $midx && > + > + git -c pack.preferBitmapTips=refs/tags/include \ > + multi-pack-index write --bitmap && > + test-tool bitmap list-commits | sort >bitmaps && > + comm -13 bitmaps commits >after && > + > + ! test_cmp before after > + ) > +'
Could we have a more precise comparison of "before" and "after" (besides the fact that they're different)?
Besides that, all the patches up to this one look good (including patch 14, verified with "--color-moved --color-moved-ws=allow-indentation-change").