Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Sep 19, 2007
  1. @spearce @gitster

    Refactor index-pack "keep $sha1" handling for reuse

    spearce authored gitster committed
    There is a subtle (but important) linkage between receive-pack and
    index-pack that allows index-pack to create a packfile but protect
    it from being deleted by a concurrent `git repack -a -d` operation.
    The linkage works by having index-pack mark the newly created pack
    with a ".keep" file and then it passes the SHA-1 name of that new
    packfile to receive-pack along its stdout channel.
    The receive-pack process must unkeep the packfile by deleting the
    .keep file, but can it can only do so after all elgible refs have
    been updated in the receiving repository.  This ensures that the
    packfile is either kept or its objects are reachable, preventing
    a concurrent repacker from deleting the packfile before it can
    determine that its objects are actually needed by the repository.
    The new builtin-fetch code needs to perform the same actions if
    it choose to run index-pack rather than unpack-objects, so I am
    moving this code out to its own function where both receive-pack
    and fetch-pack are able to invoke it when necessary.  The caller
    is responsible for deleting the returned ".keep" and freeing the
    path if the returned path is not NULL.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.