bdep-release(1)

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

COPYRIGHT
Copyright (c) 2014-2023 the build2 authors. Permission is granted to copy, distribute and/or modify this document under the terms of the MIT License.