package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.std/B0_vcs_repo/index.html
Module B0_vcs_repoSource
Version control system (VCS) repositories.
The toplevel module abstracts operations over VCS. The Hg and Git modules offer VCS specific operations.
Dry runs
The type for dry runs. In dry run for effectful operations, the actual command is given to this function and the operation succeeds without performing it.
VCS kinds
pp_kind formats kinds of VCS.
Repositories
The type for VCS repositories.
repo_dir r is r's repository directory (not the working directory).
work_dir r is r's working directory. On a git bare repo this may be B0_std.Fpath.null.
pp formats a repository. This formats repo_dir.
Finding local repositories
val find :
?search:B0_std.Cmd.tool_search ->
?kind:kind ->
?dir:B0_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). If kind is specified, will only look for a vcs of kind kind. The VCS tool is looked up with search (default to Os.Cmd.find ?search.
val get :
?search:B0_std.Cmd.tool_search ->
?kind:kind ->
?dir:B0_std.Fpath.t ->
unit ->
(t, string) resultget is like find but errors if no VCS was found.
Commits
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. The module sometimes appends the string "-dirty" to these identifiers in which case they are no longer proper identifiers.
head is "HEAD". A symbol to represent the commit currently checked out in the working directory.
commit_id repo ~dirty_mark ~commit_ish is the object name (identifier) of commit_ish. If commit_ish is "HEAD" and dirty_mark is true and the working tree of repo is_dirty, a mark gets appended to the commit identifier.
commit_ptime_s repo commit_ish is the POSIX time in seconds of commit commit_ish of repository repo.
val changes :
t ->
?after:commit_ish ->
?last:commit_ish ->
unit ->
((commit_id * string) list, string) resultchanges repo ~after ~last is the list of commits with their one-line synopsis from commit-ish after (defaults to the start of the branch) to commit-ish last (defaults to head).
tracked_files repo ~tree_ish are the files tracked by the tree object tree_ish.
val commit_files :
?stdout:B0_std.Os.Cmd.stdo ->
?stderr:B0_std.Os.Cmd.stdo ->
?msg:string ->
t ->
B0_std.Fpath.t list ->
(unit, string) resultcommit_files rrepo ~msg files commits the file files with message msg (if unspecified the VCS should prompt).
pp_commit formats a commit.
Working directory
is_dirty repo is Ok true iff the working directory of repo has uncommited changes.
not_dirty repo is Ok () iff the working directory of repo is not dirty and an error that enjoins to stash or commit otherwise.
file_is_dirty repo file is Ok true iff file has uncommited changes.
checkout repo ~and_branch commit_ish checks out commit_ish in the working directory of repo. Checks out in a new branch and_branch if provided. This fails if the current working directory is_dirty.
local_clone repo ~dir clones repo to a working directory dir and returns a repo to operate on it.
pp_dirty formats the string "dirty".
Tags
The type for VCS tags.
val tag :
?dry_run:dry_run ->
?msg:string ->
t ->
force:bool ->
sign:bool ->
commit_ish ->
tag ->
(unit, string) resulttag repo ~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.
delete_tag repo t deletes tag t in repo.
describe repo dirty_mark commit_ish identifies commit_ish using tags from repo. If commit_ish is "HEAD" and dirty_mark is true (default) and the working tree of repo is_dirty, a mark gets appended to the description.
latest_tag repo commit_ish finds the latest tag in the current branch describing commit_ish.
find_latest_version_tag repo lists tags with tags sorts those who parse with B0_std.String.to_version in increasing order and takes the greatest ones.