Skip to content
  • Shawn O. Pearce's avatar
    Lazily open pack index files on demand · d079837e
    Shawn O. Pearce authored
    In some repository configurations the user may have many packfiles,
    but all of the recent commits/trees/tags/blobs are likely to
    be in the most recent packfile (the one with the newest mtime).
    It is therefore common to be able to complete an entire operation
    by accessing only one packfile, even if there are 25 packfiles
    available to the repository.
    
    Rather than opening and mmaping the corresponding .idx file for
    every pack found, we now only open and map the .idx when we suspect
    there might be an object of interest in there.
    
    Of course we cannot known in advance which packfile contains an
    object, so we still need to scan the entire packed_git list to
    locate anything.  But odds are users want to access objects in the
    most recently created packfiles first, and that may be all they
    ever need for the current operation.
    
    Junio observed in b867092f
    
     that placing recent packfiles before
    older ones can slightly improve access times for recent objects,
    without degrading it for historical object access.
    
    This change improves upon Junio's observations by trying even harder
    to avoid the .idx files that we won't need.
    
    Signed-off-by: default avatarShawn O. Pearce <spearce@spearce.org>
    Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
    d079837e