Module Git.Mem

The memory back-end of Git.

The memory back-end means, we never use any I/O operations to read or write a Git value. All of your repository is stored on your memory. For some specific purposes, it's useful. However, keep in your mind, when your program stops, you lost your repository obviously.

Because we don't need to handle any I/O operations, this store could be more fast than the Unix/Mirage store and relevant for testing. However, we still use the Lwt monad to protect mutable reference value against data-race condition.

Finally, this module respects the same API Minimal.S and can handle PACK file - and, by this way, can be used on the Smart protocol. Obviously, some ext. modules like INDEX could not be used with this store (because thay interact with a file-system back-end).

type 'hash t
module Make (Digestif : Digestif.S) : sig ... end
module Store : sig ... end
module Sync (Store : sig ... end) : Sync.S with type hash = Store.hash and type store = Store.t