Skip to content
  • Jonathan Tan's avatar
    pack-bitmap: remove bitmap_git global variable · 3ae5fa07
    Jonathan Tan authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Remove the bitmap_git global variable. Instead, generate on demand an
    instance of struct bitmap_index for code that needs to access it.
    
    This allows us significant control over the lifetime of instances of
    struct bitmap_index. In particular, packs can now be closed without
    worrying if an unnecessarily long-lived "pack" field in struct
    bitmap_index still points to it.
    
    The bitmap API is also clearer in that we need to first obtain a struct
    bitmap_index, then we use it.
    
    This patch raises two potential issues: (1) memory for the struct
    bitmap_index is allocated without being freed, and (2)
    prepare_bitmap_git() and prepare_bitmap_walk() can reuse a previously
    loaded bitmap. For (1), this will be dealt with in a subsequent patch in
    this patch set that also deals with freeing the contents of the struct
    bitmap_index (which were not freed previously, because they have global
    scope). For (2), current bitmap users only load the bitmap once at most
    (note that pack-objects can use bitmaps or write bitmaps, but not both
    at the same time), so support for reuse has no effect - and future users
    can pass around the struct bitmap_index * obtained if they need to do 2
    or more things with the same bitmap.
    
    Helped-by: default avatarStefan Beller <sbeller@google.com>
    Signed-off-by: default avatarJonathan Tan <jonathantanmy@google.com>
    Helped-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    3ae5fa07