Neg
Negotiation 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 negotiator
val 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.io
val 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