bdep-release - Man Page

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. In this mode release can be optionally instructed to update an existing tag for the current version to point to the latest revision (--current-tag=update) or to remove it (--current-tag=remove).

When releasing a revision, 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. Alternatively, a revision can be released by amending one or more existing commits using the --amend and --squash options. In this case the index may still contain additional changes but is not required to.

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.

--current-tag action

Specify what to do with an existing tag for the current version when tagging a new revision. Valid values for this option are keep (default), update, and remove.

--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.

--amend

Release a revision by amending the latest commit instead of making a new one.

--squash num

Release a revision by squashing the specified number of previous commits and then amending the result. Requires the --amend option to be specified.

--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.

--stdout-format format

Representation format to use for printing to stdout.

--jobs|-j num

Number of jobs to perform in parallel.

--progress

Display progress indicators for long-lasting operations, such as network transfers, building, etc.

--no-progress

Suppress progress indicators for long-lasting operations, such as network transfers, building, etc.

--diag-color

Use color in diagnostics.

--no-diag-color

Don't use color in diagnostics.

--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.

--default-options dir

The directory to load additional default options files from.

--no-default-options

Don't load default options files.

Default Options Files

See bdep-default-options-files(1) for an overview of the default options files. For the release command the search start directory is the project directory. The following options files are searched for in each directory and, if found, loaded in the order listed:

bdep.options
bdep-release.options
bdep-release-{version|revision|open|tag}.options # (mode-dependent)

The following release command options cannot be specified in the default options files:

--directory|-d
--revision
--open
--tag

Bugs

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

Referenced By

bdep(1).

June 2023 bdep 0.16.0