package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.std/B0_vcs_repo/index.html
Module B0_vcs_repo
Source
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) result
find ~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) result
get
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) result
changes 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) result
commit_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) result
tag 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.