B00_vcsVersion control system (VCS) repositories.
XXX. This likely needs a cleanup design round. Also make clear that this is not command oriented but repo oriented should make things more clear.
val pp_kind : kind B00_std.Fmt.tpp_kind formats types of VCS.
val repo_dir : t -> B00_std.Fpath.trepo_dir r is r's repository directory (not the working directory).
val work_dir : t -> B00_std.Fpath.twork_dir r is r's working directory. On a git bare repo this may be Fpath.null.
val repo_cmd : t -> B00_std.Cmd.trepo_cmd r is the base command to use to act on r. Use only if you need VCS specific functionality not provided by the module.
val pp : t B00_std.Fmt.tpp formats a repository.
val find : ?dir:B00_std.Fpath.t -> unit -> (t option, string) resultfind ~dir () finds, using VCS functionality, a repository starting in directory dir (if unspecified this is the cwd).
val get : ?dir:B00_std.Fpath.t -> unit -> (t, string) resultget is like find but errors if no VCS was found.
The type for symbols resolving to a commit. Important, the module uses "HEAD" for specifying the commit currently checkout in the working directory; use this symbol even if the underlying VCS is Hg.
The type for commit identifiers. Note that the module sometimes appends the string "-dirty" to these identifiers in which case they are no longer.
val head : commit_ishhead is "HEAD". A symbol to represent the commit currently checked out in the working directory.
val commit_id : t -> dirty_mark:bool -> commit_ish -> (commit_id, string) resultcommit_id r ~dirty_mark ~commit_ish is the object name (identifier) of commit_ish. If commit_ish is "HEAD" and dirty_mark is true (default) and the working tree of r is_dirty, a mark gets appended to the commit identifier.
val commit_ptime_s : t -> commit_ish -> (int, string) resultcommit_ptime_s t commit_ish is the POSIX time in seconds of commit commit_ish of repository r.
val changes : t -> after:commit_ish -> until:commit_ish -> ((commit_id * string) list, string) resultchanges r ~after ~until is the list of commits with their one-line synopsis from commit-ish after to commit-ish until.
val tracked_files : t -> tree_ish:string -> (B00_std.Fpath.t list, string) resulttracked_files ~tree_ish r are the files tracked by the tree object tree_ish.
val commit_files : ?stdout:B00_std.Os.Cmd.stdo -> ?stderr:B00_std.Os.Cmd.stdo -> ?msg:string -> t -> B00_std.Fpath.t list -> (unit, string) resultcommit_files r ~msg files commits the file files with message msg (if unspecified the VCS should prompt).
is_dirty r is Ok true iff the working directory of r has uncommited changes.
not_dirty is Ok () iff the working directory of r is not dirty and an error that enjoins to stash or commit otherwise.
val file_is_dirty : t -> B00_std.Fpath.t -> (bool, string) resultfile_is_dirty r f is Ok true iff f has uncommited changes.
val checkout : ?and_branch:string -> t -> commit_ish -> (unit, string) resultcheckout r ~and_branch commit_ish checks out commit_ish in the working directory of r. Checks out in a new branch and_branch if provided. This fails if the current working directory is_dirty.
val local_clone : t -> dir:B00_std.Fpath.t -> (t, string) resultlocal_clone r ~dir clones r to a working directory dir and returns a repo to operate on it.
val tag : ?msg:string -> t -> force:bool -> sign:bool -> commit_ish -> tag -> (unit, string) resulttag r ~force ~sign ~msg commit_ish t tags commit_ish with t and message msg (if unspecified the VCS should prompt). If sign is true (defaults to false) signs the tag (`Git repos only). If force is true (default to false) doesn't fail if the tag already exists.
val describe : t -> dirty_mark:bool -> commit_ish -> (string, string) resultdescribe r dirty_mark commit_ish identifies commit_ish using tags from the repository r. If commit_ish is "HEAD" and dirty_mark is true (default) and the working tree of r is_dirty, a mark gets appended to the description.
val latest_tag : t -> commit_ish -> (tag option, string) resultlatest_tag r commit_ish finds the latest tag in the current branch describing commit_ish.
module Git : sig ... endGit specific operations.
module Hg : sig ... end