Skip to content
  • Michael Haggerty's avatar
    packed_ref_cache: keep the `packed-refs` file mmapped if possible · 5b633610
    Michael Haggerty authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Keep a copy of the `packed-refs` file contents in memory for as long
    as a `packed_ref_cache` object is in use:
    
    * If the system allows it, keep the `packed-refs` file mmapped.
    
    * If not (either because the system doesn't support `mmap()` at all,
      or because a file that is currently mmapped cannot be replaced via
      `rename()`), then make a copy of the file's contents in
      heap-allocated space, and keep that around instead.
    
    We base the choice of behavior on a new build-time switch,
    `MMAP_PREVENTS_DELETE`. By default, this switch is set for Windows
    variants.
    
    After this commit, `MMAP_NONE` and `MMAP_TEMPORARY` are still handled
    identically. But the next commit will introduce a difference.
    
    This whole change is still pointless, because we only read the
    `packed-refs` file contents immediately after instantiating the
    `packed_ref_cache`. But that will soon change.
    
    Signed-off-by: default avatarMichael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    5b633610