sig
  type t = [ `Git | `Hg ]
  val exists : Cmd.path -> t -> bool Cmd.result
  val find : Cmd.path -> t option Cmd.result
  val get : Cmd.path -> t Cmd.result
  val head : ?dirty:bool -> Cmd.path -> t -> string Cmd.result
  val describe : ?dirty:bool -> Cmd.path -> t -> string Cmd.result
  val override_kind : unit -> t option
  val set_override_kind : t option -> unit
  val override_exec : unit -> string option
  val set_override_exec : string option -> unit
end