Skip to content
  • Jeff King's avatar
    bitmap_has_sha1_in_uninteresting(): drop BUG check · 5476fb07
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    Commit 30cdc33f (pack-bitmap: save "have" bitmap from
    walk, 2018-08-21) introduced a new function for looking at
    the "have" side of a bitmap walk. Because it only makes
    sense to do so after we've finished the walk, we added an
    extra safety assertion, making sure that bitmap_git->result
    is non-NULL.
    
    However, this safety is misguided. It was trying to catch
    the case where we had called prepare_bitmap_walk() to give
    us a "struct bitmap_index", but had not yet called
    traverse_bitmap_commit_list() to walk it. But all of the
    interesting computation (including setting up the result and
    "have" bitmaps) happens in the first function! The latter
    function only delivers the result to a callback function.
    
    So the case we were worried about is impossible; if you get
    a non-NULL result from prepare_bitmap_walk(), then its
    "have" field will be fully formed.
    
    But much worse, traverse_bitmap_commit_list() actually frees
    the result field as it finishes. Which means that this
    assertion is worse than useless: it's almost guaranteed to
    trigger!
    
    Our test suite didn't catch this because the function isn't
    actually exercised at all. The only caller comes from
    6a1e32d5
    
     (pack-objects: reuse on-disk deltas for thin
    "have" objects, 2018-08-21), and that's triggered only when
    you fetch or push history that contains an object with a
    base that is found deep in history. Our test suite fetches
    and pushes either don't use bitmaps, or use too-small
    example repositories. But any reasonably-sized real-world
    push or fetch (with bitmaps) would trigger this.
    
    This patch drops the harmful assertion and tweaks the
    docstring for the function to make the precondition clear.
    The tests need to be improved to exercise this new
    pack-objects feature, but we'll do that in a separate
    commit.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    5476fb07