sig   type kind = [ `Git | `Hg ]   val pp_kind : Format.formatter -> Topkg.Vcs.kind -> unit   type commit_ish = string   type t   val kind : Topkg.Vcs.t -> Topkg.Vcs.kind   val dir : Topkg.Vcs.t -> Topkg.fpath   val cmd : Topkg.Vcs.t -> Topkg.Cmd.t   val find : ?dir:Topkg.fpath -> unit -> Topkg.Vcs.t option Topkg.result   val get : ?dir:Topkg.fpath -> unit -> Topkg.Vcs.t Topkg.result   val pp : Format.formatter -> Topkg.Vcs.t -> unit   val is_dirty : Topkg.Vcs.t -> bool Topkg.result   val not_dirty : Topkg.Vcs.t -> unit Topkg.result   val file_is_dirty : Topkg.Vcs.t -> Topkg.fpath -> bool Topkg.result   val head : ?dirty:bool -> Topkg.Vcs.t -> string Topkg.result   val commit_id :     ?dirty:bool ->     ?commit_ish:Topkg.Vcs.commit_ish -> Topkg.Vcs.t -> string Topkg.result   val commit_ptime_s :     ?commit_ish:Topkg.Vcs.commit_ish -> Topkg.Vcs.t -> int Topkg.result   val describe :     ?dirty:bool ->     ?commit_ish:Topkg.Vcs.commit_ish -> Topkg.Vcs.t -> string Topkg.result   val tags : Topkg.Vcs.t -> string list Topkg.result   val changes :     ?until:Topkg.Vcs.commit_ish ->     Topkg.Vcs.t ->     after:Topkg.Vcs.commit_ish -> (string * string) list Topkg.result   val tracked_files :     ?tree_ish:string -> Topkg.Vcs.t -> Topkg.fpath list Topkg.result   val clone : Topkg.Vcs.t -> dir:Topkg.fpath -> unit Topkg.result   val checkout :     ?branch:string ->     Topkg.Vcs.t -> commit_ish:Topkg.Vcs.commit_ish -> unit Topkg.result   val commit_files :     ?msg:string -> Topkg.Vcs.t -> Topkg.fpath list -> unit Topkg.result   val tag :     ?force:bool ->     ?sign:bool ->     ?msg:string ->     ?commit_ish:string -> Topkg.Vcs.t -> string -> unit Topkg.result   val delete_tag : Topkg.Vcs.t -> string -> unit Topkg.result end