]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ab/test-lib'
authorJunio C Hamano <gitster@pobox.com>
Mon, 1 Nov 2021 20:48:08 +0000 (13:48 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 1 Nov 2021 20:48:08 +0000 (13:48 -0700)
Test (cosmetic) fix.

* ab/test-lib:
  t5310: drop lib-bundle.sh include

1  2 
t/t5310-pack-bitmaps.sh

diff --combined t/t5310-pack-bitmaps.sh
index 673baa5c3ccc8a44948280337d55fa67fd28f324,4703ec36b2917896985f1d86e2b1c852fa27c6c8..dcf03d324a25a4bdc14156c6b53c5442f9c3d83b
@@@ -5,13 -5,8 +5,12 @@@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=ma
  export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
  
  . ./test-lib.sh
- . "$TEST_DIRECTORY"/lib-bundle.sh
  . "$TEST_DIRECTORY"/lib-bitmap.sh
  
 +# t5310 deals only with single-pack bitmaps, so don't write MIDX bitmaps in
 +# their place.
 +GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP=0
 +
  objpath () {
        echo ".git/objects/$(echo "$1" | sed -e 's|\(..\)|\1/|')"
  }
@@@ -29,10 -24,93 +28,10 @@@ has_any () 
        grep -Ff "$1" "$2"
  }
  
 -# To ensure the logic for "maximal commits" is exercised, make
 -# the repository a bit more complicated.
 -#
 -#    other                         second
 -#      *                             *
 -# (99 commits)                  (99 commits)
 -#      *                             *
 -#      |\                           /|
 -#      | * octo-other  octo-second * |
 -#      |/|\_________  ____________/|\|
 -#      | \          \/  __________/  |
 -#      |  | ________/\ /             |
 -#      *  |/          * merge-right  *
 -#      | _|__________/ \____________ |
 -#      |/ |                         \|
 -# (l1) *  * merge-left               * (r1)
 -#      | / \________________________ |
 -#      |/                           \|
 -# (l2) *                             * (r2)
 -#       \___________________________ |
 -#                                   \|
 -#                                    * (base)
 -#
 -# We only push bits down the first-parent history, which
 -# makes some of these commits unimportant!
 -#
 -# The important part for the maximal commit algorithm is how
 -# the bitmasks are extended. Assuming starting bit positions
 -# for second (bit 0) and other (bit 1), the bitmasks at the
 -# end should be:
 -#
 -#      second: 1       (maximal, selected)
 -#       other: 01      (maximal, selected)
 -#      (base): 11 (maximal)
 -#
 -# This complicated history was important for a previous
 -# version of the walk that guarantees never walking a
 -# commit multiple times. That goal might be important
 -# again, so preserve this complicated case. For now, this
 -# test will guarantee that the bitmaps are computed
 -# correctly, even with the repeat calculations.
 -
 -test_expect_success 'setup repo with moderate-sized history' '
 -      test_commit_bulk --id=file 10 &&
 -      git branch -M second &&
 -      git checkout -b other HEAD~5 &&
 -      test_commit_bulk --id=side 10 &&
 -
 -      # add complicated history setup, including merges and
 -      # ambiguous merge-bases
 -
 -      git checkout -b merge-left other~2 &&
 -      git merge second~2 -m "merge-left" &&
 -
 -      git checkout -b merge-right second~1 &&
 -      git merge other~1 -m "merge-right" &&
 -
 -      git checkout -b octo-second second &&
 -      git merge merge-left merge-right -m "octopus-second" &&
 -
 -      git checkout -b octo-other other &&
 -      git merge merge-left merge-right -m "octopus-other" &&
 -
 -      git checkout other &&
 -      git merge octo-other -m "pull octopus" &&
 -
 -      git checkout second &&
 -      git merge octo-second -m "pull octopus" &&
 -
 -      # Remove these branches so they are not selected
 -      # as bitmap tips
 -      git branch -D merge-left &&
 -      git branch -D merge-right &&
 -      git branch -D octo-other &&
 -      git branch -D octo-second &&
 -
 -      # add padding to make these merges less interesting
 -      # and avoid having them selected for bitmaps
 -      test_commit_bulk --id=file 100 &&
 -      git checkout other &&
 -      test_commit_bulk --id=side 100 &&
 -      git checkout second &&
 -
 -      bitmaptip=$(git rev-parse second) &&
 -      blob=$(echo tagged-blob | git hash-object -w --stdin) &&
 -      git tag tagged-blob $blob &&
 -      git config repack.writebitmaps true
 +setup_bitmap_history
 +
 +test_expect_success 'setup writing bitmaps during repack' '
 +      git config repack.writeBitmaps true
  '
  
  test_expect_success 'full repack creates bitmaps' '
        grep "\"key\":\"num_maximal_commits\",\"value\":\"107\"" trace
  '
  
 -test_expect_success 'rev-list --test-bitmap verifies bitmaps' '
 -      git rev-list --test-bitmap HEAD
 -'
 -
 -rev_list_tests_head () {
 -      test_expect_success "counting commits via bitmap ($state, $branch)" '
 -              git rev-list --count $branch >expect &&
 -              git rev-list --use-bitmap-index --count $branch >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "counting partial commits via bitmap ($state, $branch)" '
 -              git rev-list --count $branch~5..$branch >expect &&
 -              git rev-list --use-bitmap-index --count $branch~5..$branch >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "counting commits with limit ($state, $branch)" '
 -              git rev-list --count -n 1 $branch >expect &&
 -              git rev-list --use-bitmap-index --count -n 1 $branch >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "counting non-linear history ($state, $branch)" '
 -              git rev-list --count other...second >expect &&
 -              git rev-list --use-bitmap-index --count other...second >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "counting commits with limiting ($state, $branch)" '
 -              git rev-list --count $branch -- 1.t >expect &&
 -              git rev-list --use-bitmap-index --count $branch -- 1.t >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "counting objects via bitmap ($state, $branch)" '
 -              git rev-list --count --objects $branch >expect &&
 -              git rev-list --use-bitmap-index --count --objects $branch >actual &&
 -              test_cmp expect actual
 -      '
 -
 -      test_expect_success "enumerate commits ($state, $branch)" '
 -              git rev-list --use-bitmap-index $branch >actual &&
 -              git rev-list $branch >expect &&
 -              test_bitmap_traversal --no-confirm-bitmaps expect actual
 -      '
 -
 -      test_expect_success "enumerate --objects ($state, $branch)" '
 -              git rev-list --objects --use-bitmap-index $branch >actual &&
 -              git rev-list --objects $branch >expect &&
 -              test_bitmap_traversal expect actual
 -      '
 -
 -      test_expect_success "bitmap --objects handles non-commit objects ($state, $branch)" '
 -              git rev-list --objects --use-bitmap-index $branch tagged-blob >actual &&
 -              grep $blob actual
 -      '
 -}
 -
 -rev_list_tests () {
 -      state=$1
 -
 -      for branch in "second" "other"
 -      do
 -              rev_list_tests_head
 -      done
 -}
 -
 -rev_list_tests 'full bitmap'
 -
 -test_expect_success 'clone from bitmapped repository' '
 -      git clone --no-local --bare . clone.git &&
 -      git rev-parse HEAD >expect &&
 -      git --git-dir=clone.git rev-parse HEAD >actual &&
 -      test_cmp expect actual
 -'
 -
 -test_expect_success 'partial clone from bitmapped repository' '
 -      test_config uploadpack.allowfilter true &&
 -      git clone --no-local --bare --filter=blob:none . partial-clone.git &&
 -      (
 -              cd partial-clone.git &&
 -              pack=$(echo objects/pack/*.pack) &&
 -              git verify-pack -v "$pack" >have &&
 -              awk "/blob/ { print \$1 }" <have >blobs &&
 -              # we expect this single blob because of the direct ref
 -              git rev-parse refs/tags/tagged-blob >expect &&
 -              test_cmp expect blobs
 -      )
 -'
 -
 -test_expect_success 'setup further non-bitmapped commits' '
 -      test_commit_bulk --id=further 10
 -'
 -
 -rev_list_tests 'partial bitmap'
 -
 -test_expect_success 'fetch (partial bitmap)' '
 -      git --git-dir=clone.git fetch origin second:second &&
 -      git rev-parse HEAD >expect &&
 -      git --git-dir=clone.git rev-parse HEAD >actual &&
 -      test_cmp expect actual
 -'
 +basic_bitmap_tests
  
  test_expect_success 'incremental repack fails when bitmaps are requested' '
        test_commit more-1 &&
@@@ -280,6 -460,17 +279,6 @@@ test_expect_success 'truncated bitmap f
        test_i18ngrep corrupted.bitmap.index stderr
  '
  
 -# have_delta <obj> <expected_base>
 -#
 -# Note that because this relies on cat-file, it might find _any_ copy of an
 -# object in the repository. The caller is responsible for making sure
 -# there's only one (e.g., via "repack -ad", or having just fetched a copy).
 -have_delta () {
 -      echo $2 >expect &&
 -      echo $1 | git cat-file --batch-check="%(deltabase)" >actual &&
 -      test_cmp expect actual
 -}
 -
  # Create a state of history with these properties:
  #
  #  - refs that allow a client to fetch some new history, while sharing some old
@@@ -362,42 -553,4 +361,42 @@@ test_expect_success 'fetch with bitmap
        )
  '
  
 +test_expect_success 'pack.preferBitmapTips' '
 +      git init repo &&
 +      test_when_finished "rm -fr repo" &&
 +      (
 +              cd repo &&
 +
 +              # create enough commits that not all are receive bitmap
 +              # coverage even if they are all at the tip of some reference.
 +              test_commit_bulk --message="%s" 103 &&
 +
 +              git rev-list HEAD >commits.raw &&
 +              sort <commits.raw >commits &&
 +
 +              git log --format="create refs/tags/%s %H" HEAD >refs &&
 +              git update-ref --stdin <refs &&
 +
 +              git repack -adb &&
 +              test-tool bitmap list-commits | sort >bitmaps &&
 +
 +              # remember which commits did not receive bitmaps
 +              comm -13 bitmaps commits >before &&
 +              test_file_not_empty before &&
 +
 +              # mark the commits which did not receive bitmaps as preferred,
 +              # and generate the bitmap again
 +              perl -pe "s{^}{create refs/tags/include/$. }" <before |
 +                      git update-ref --stdin &&
 +              git -c pack.preferBitmapTips=refs/tags/include repack -adb &&
 +
 +              # finally, check that the commit(s) without bitmap coverage
 +              # are not the same ones as before
 +              test-tool bitmap list-commits | sort >bitmaps &&
 +              comm -13 bitmaps commits >after &&
 +
 +              ! test_cmp before after
 +      )
 +'
 +
  test_done