sig
  val check_kind : B0_vcs.t -> (unit, string) Stdlib.result
  type remote = string
  type branch = string
  val pp_branch : B0_vcs.Git.branch B0_std.Fmt.t
  val pp_remote_branch : (B0_vcs.Git.remote * B0_vcs.Git.branch) B0_std.Fmt.t
  val remote_branch_exists :
    B0_vcs.t ->
    remote:B0_vcs.Git.remote ->
    branch:B0_vcs.Git.branch -> (bool, string) Stdlib.result
  val remote_branch_fetch :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    B0_vcs.t ->
    remote:B0_vcs.Git.remote ->
    branch:B0_vcs.Git.branch -> (unit, string) Stdlib.result
  val remote_branch_push :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    B0_vcs.t ->
    force:bool ->
    src:B0_vcs.Git.branch ->
    remote:B0_vcs.Git.remote ->
    dst:B0_vcs.Git.remote -> (unit, string) Stdlib.result
  val remote_branch_delete :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    B0_vcs.t ->
    force:bool ->
    remote:B0_vcs.Git.remote ->
    branch:B0_vcs.Git.branch -> (unit, string) Stdlib.result
  val branch_delete :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    B0_vcs.t ->
    force:bool -> branch:B0_vcs.Git.branch -> (unit, string) Stdlib.result
  val transient_checkout :
    B0_vcs.t ->
    force:bool ->
    branch:B0_vcs.Git.branch ->
    B0_std.Fpath.t ->
    B0_vcs.commit_ish option -> (B0_vcs.t, string) Stdlib.result
  val transient_checkout_delete :
    B0_vcs.t -> force:bool -> (unit, string) Stdlib.result
  val with_transient_checkout :
    ?dir:B0_std.Fpath.t ->
    B0_vcs.t ->
    force:bool ->
    branch:B0_vcs.Git.branch ->
    B0_vcs.commit_ish option ->
    (B0_vcs.t -> 'a) -> ('a, string) Stdlib.result
  val add :
    B0_vcs.t ->
    force:bool -> B0_std.Fpath.t list -> (unit, string) Stdlib.result
  val has_staged_changes : B0_vcs.t -> (bool, string) Stdlib.result
  val commit :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    ?sign:bool ->
    ?reset_author:bool ->
    ?amend:bool -> ?msg:string -> B0_vcs.t -> (unit, string) Stdlib.result
  val commit_exists :
    B0_vcs.t -> B0_vcs.commit_ish -> (bool, string) Stdlib.result
  val rm :
    ?stdout:B0_std.Os.Cmd.stdo ->
    ?stderr:B0_std.Os.Cmd.stdo ->
    B0_vcs.t ->
    force:bool ->
    recurse:bool ->
    ignore_unmatch:bool ->
    B0_std.Fpath.t list -> (unit, string) Stdlib.result
end