NegNegotiation engine used to fetch objects from a Git repository.
This implementation does not have any Git logics or how to store properly a Git object. However, it implements the negotiation engine used to fetch objects from a Git repository.
Finally, it needs fews primitives to properly receive Git objects from the state of a local Git repository:
exists which tells to us if an object exists or not.parents to get parents of a commit.deref to de-reference a given reference.locals to get locals references of the Git repository.The user must give to us a light store which is able to keep some mutable values used by the negotiation engine.
find_common talks directly to the remote Git repository.
val make : compare:('uid -> 'uid -> int) -> 'uid negotiatorval find_common : 
  's Sigs.scheduler ->
  ('flow, 'error, 's) Sigs.flow ->
  'flow ->
  configuration ->
  'uid hex ->
  ('uid, 'ref, 'uid * int Stdlib.ref * int64, 'g, 's) Sigs.access ->
  ('uid, 'uid * int Stdlib.ref * int64, 'g) Sigs.store ->
  'uid negotiator ->
  Smart.Context.t ->
  ?deepen:[ `Depth of int | `Timestamp of int64 ] ->
  'uid list ->
  ([ `Continue of int | `Close ], 's) Sigs.ioval tips : 
  's Sigs.scheduler ->
  ('uid, 'ref, 'uid * int Stdlib.ref * int64, 'g, 's) Sigs.access ->
  ('uid, 'uid * int Stdlib.ref * int64, 'g) Sigs.store ->
  'uid negotiator ->
  (unit, 's) Sigs.io