type ('diff, 'info, 'property_data) t
val empty : id -> ('diff, 'info, 'property_data) t
val current_branch : ('e, 'i, 'c) t -> Branch.t
val branches : ('e, 'i, 'c) t -> Branch.t list
val reset_branch : ('e, 'i, 'c) t -> Branch.t -> id -> ('e, 'i, 'c) t
val delete_branch : ('e, 'i, 'c) t -> Branch.t -> ('e, 'i, 'c) t
val merge : ('diff, 'i, 'c) t -> id -> ours:'diff -> theirs:'diff -> ?into:Branch.t ->
Branch.t -> ('diff, 'i, 'c) t
val commit : ('diff, 'i, 'c) t -> id -> 'diff -> ('diff, 'i, 'c) t
val rewrite_merge : ('diff, 'i, 'c) t -> id -> ours:'diff -> theirs:'diff -> at:id ->
Branch.t -> ('diff, 'i, 'c) t
val checkout : ('e, 'i, 'c) t -> Branch.t -> ('e, 'i, 'c) t
val set_info : ('e, 'info, 'c) t -> id -> 'info -> ('e, 'info, 'c) t
val get_info : ('e, 'info, 'c) t -> id -> 'info option
val dag : ('diff, 'info, 'cdata) t -> ('diff, 'info, 'cdata) Dag.t
val create_property : ('e, 'i, 'c) t -> id list -> 'c -> ('e, 'i, 'c) t
val gc : ('e, 'info, 'c) t -> ('e, 'info, 'c) t * Dag.NodeSet.t
val reachable : ('e, 'info, 'c) t -> id -> Dag.NodeSet.t