Module type Vcs.S

module Branch : sig ... end
type id
type 'kind branch_info = {
kind : [> `Master ] as 'kind;
root : id;
pos : id;
}
type ('kind, 'diff, 'info, 'property_data) t constraint 'kind = [> `Master ]
val empty : id -> ('kind'diff'info'property_data) t
val current_branch : ('k'e'i'c) t -> Branch.t
val branches : ('k'e'i'c) t -> Branch.t list
val get_branch : ('k'e'i'c) t -> Branch.t -> 'k branch_info
val reset_branch : ('k'e'i'c) t -> Branch.t -> id -> ('k'e'i'c) t
val branch : ('kind'e'i'c) t -> ?⁠root:id -> ?⁠pos:id -> Branch.t -> 'kind -> ('kind'e'i'c) t
val delete_branch : ('k'e'i'c) t -> Branch.t -> ('k'e'i'c) t
val merge : ('k'diff'i'c) t -> id -> ours:'diff -> theirs:'diff -> ?⁠into:Branch.t -> Branch.t -> ('k'diff'i'c) t
val commit : ('k'diff'i'c) t -> id -> 'diff -> ('k'diff'i'c) t
val rewrite_merge : ('k'diff'i'c) t -> id -> ours:'diff -> theirs:'diff -> at:id -> Branch.t -> ('k'diff'i'c) t
val checkout : ('k'e'i'c) t -> Branch.t -> ('k'e'i'c) t
val set_info : ('k'e'info'c) t -> id -> 'info -> ('k'e'info'c) t
val get_info : ('k'e'info'c) t -> id -> 'info option
module Dag : Dag.S with type node = id
val dag : ('kind'diff'info'cdata) t -> ('diff'info'cdata) Dag.t
val create_property : ('k'e'i'c) t -> id list -> 'c -> ('k'e'i'c) t
val property_of : ('k'e'i'c) t -> id -> 'c Dag.Property.t list
val delete_property : ('k'e'i'c) t -> 'c Dag.Property.t -> ('k'e'i'c) t
val gc : ('k'e'info'c) t -> ('k'e'info'c) t * Dag.NodeSet.t
val reachable : ('k'e'info'c) t -> id -> Dag.NodeSet.t