Implemented tree reloading in fast-import.
authorShawn O. Pearce <spearce@spearce.org>
Thu, 24 Aug 2006 08:37:35 +0000 (04:37 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 14 Jan 2007 07:15:06 +0000 (02:15 -0500)
commit41e5257fcf4db31dfa2576aac1f50b140f2bb058
treee25baef94304f498727887f8a0a74f0697ef4c42
parent72303d44e9d8f3fc9bef039b472a2bd259509420
Implemented tree reloading in fast-import.

Tree reloading allows fast-import to swap out the least-recently used
branch by simply deallocating the data structures from memory that
were associated with that branch.  Later if the branch becomes active
again it can lazily recreate those structures on demand by reloading
the necessary trees from the pack file it originally wrote them to.

The reloading process is implemented by mmap'ing the pack into
memory and using a much tighter variant of the pack reading code
contained in sha1_file.c.  This was a blatent copy from sha1_file.c
but the unpacking functions were significantly simplified and are
actually now in a form that should make it easier to map only the
necessary regions of a pack rather than the entire file.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
fast-import.c