NAME

bdep-release – manage project's version during release

SYNOPSIS

bdep release [options] [prj-spec]

prj-spec = --directory|-d prj-dir | pkg-spec
pkg-spec = (--directory|-d pkg-dir)...

DESCRIPTION

The release command manages the project's version during the release. Specifically, it first changes the snapshot version to the corresponding release version in each project package's manifest file, commits these changes (unless --no-commit is specified), tags this commit (unless --no-tag is specified), and, if --push is specified, pushes the changes to the remote. Unless --no-open is specified, the release command then opens the next development cycle by changing the version to a snapshot, committing these changes (unless --no-commit is specified), and, if --push is specified, pushing them to the remote. Note that committing, tagging, and pushing is currently only supported for git(1) project repositories.

The release command can also be used to release a new package revision by passing the --revision option. In this mode release increments the current version's revision component in each project package's manifest file, commits these changes (unless --no-commit is specified), tags this commit (unless --no-tag is specified), and, if --push is specified, pushes the changes to the remote. Note that in this case the project's repository index is expected to already contain other changes since for a revision all the associated changes, including to version, must belong to a single commit. In this mode release will also silently replace an existing tag for the same version.

The release command also has a number of continue modes that allow the completion of steps that were previously suppressed with the --no-* options in the above main modes. These are --tag which tags the release commit and, if --push is specified, pushes it to the remote as well as --open which performs the opening of the next development cycle as described above.

In all the modes that perform a commit, if the project's repository index already contains other changes, then the commit message is automatically opened for editing unless --no-edit is specified. The editing of the commit message in the absence of other changes can be requested with the --edit option.

Normally, release operates on all the packages in a project. If no project directory is specified, then the current working directory is assumed and all the packages are released, even if the current directory is a package directory. If, however, one or more package directories are specified explicitly with --directory|-d, then release assumes you know what you are doing and only releases these packages. All the packages being released must have the same version but may have different revisions.

RELEASE OPTIONS

--revision
Release a new package revision instead of a new version.
--no-commit
Don't commit the changes. Implies --no-tag and, in the version release mode, --no-open.
--no-tag
Don't tag the release commit. Tagging can be performed later using the --tag mode option.
--tag
Tag the already released version instead of releasing a new one.
--push
Push the committed changes and tags to the remote.
--show-push
Print the push command instead of executing it. This allows examining the committed changes and tags before pushing them to the remote. Note that the command is printed to stdout.
--no-open
Don't open the next development cycle. Opening can be performed later using the --open mode option.
--open
Open the next development cycle instead of releasing a new version.
--alpha
Release an alpha instead of the final version.
--beta
Release a beta version instead of the final version.
--minor
Release the next minor version instead of the current patch.
--major
Release the next major version instead of the current minor or patch.
--open-beta
Open the development cycle with the next beta version.
--open-patch
Open the development cycle with the next patch version. This is the default if the current patch version is not 0 (bugfix release series).
--open-minor
Open the development cycle with the next minor version. This is the default if the current patch version is 0 (feature release series).
--open-major
Open the development cycle with the next major version.
--open-base version
Open the development cycle with the specified version. The base version should be in the major.minor.patch form with the opened version becoming major.minor.patch-a.0.z.
--edit
Open the commit message for editing.
--no-edit
Don't open the commit message for editing.
--force check
Force releasing, disabling the specified check. Repeat this option to disable multiple checks.
--yes|-y
Don't prompt for confirmation before releasing.
--directory|-d dir
Assume project/package is in the specified directory rather than in the current working directory.

COMMON OPTIONS

The common options are summarized below with a more detailed description available in bdep-common-options(1).

-v
Print essential underlying commands being executed.
-V
Print all underlying commands being executed.
--quiet|-q
Run quietly, only printing error messages.
--verbose level
Set the diagnostics verbosity to level between 0 and 6.
--jobs|-j num
Number of jobs to perform in parallel.
--no-progress
Suppress progress indicators for long-lasting operations, such as network transfers, building, etc.
--bpkg path
The package manager program to be used for build configuration management.
--bpkg-option opt
Additional option to be passed to the package manager program.
--build path
The build program to be used to build packages.
--build-option opt
Additional option to be passed to the build program.
--curl path
The curl program to be used for network operations.
--curl-option opt
Additional option to be passed to the curl program.
--pager path
The pager program to be used to show long text.
--pager-option opt
Additional option to be passed to the pager program.
--options-file file
Read additional options from file.

BUGS

Send bug reports to the users@build2.org mailing list.