bdep-release(1)
π bdep-release(1) π
okay so welcome to the bdep-release page, bestie β straight out of the General Commands Manual and here to walk you through managing your project's version during release. no cap, this one's a whole journey. buckle up π
β¨ 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 πΈ
so the release command is literally the main character of your project's version management during a release. here's the tea β: first it flips the snapshot version over to the matching release version in every project package's manifest file, commits those changes (unless you said --no-commit, bestie), tags that commit (unless --no-tag), and if --push is in the mix, it pushes the changes to the remote. then β unless --no-open is hanging around β the release command opens the next development cycle by switching the version to a snapshot, committing those changes (again, unless --no-commit), and, if --push was specified, pushing them to the remote. quick heads up though: committing, tagging, and pushing is currently only supported for git(1) project repositories. periodt.
you can also use the release command to ship a new package revision by passing the --revision option. in this mode, release bumps the revision component of the current version in each project package's manifest file, commits those changes (unless --no-commit), tags the commit (unless --no-tag), and if --push is specified, pushes everything to the remote. and in this mode you can optionally tell release to update an existing tag for the current version so it points at the latest revision (--current-tag=update) or to straight-up remove it (--current-tag=remove). choose your fighter β¨
when you're releasing a revision, the project's repository index is expected to already contain other changes, since for a revision all the associated changes β including the version change β must belong to a single commit. alternatively, you can release a revision by amending one or more existing commits using the --amend and --squash options. in that case the index may still contain additional changes, but it doesn't have to. lowkey flexible, honestly π«Ά
the release command also has a bunch of continue modes that let you finish steps you previously suppressed with the --no-* options in the main modes above. those are --tag, which tags the release commit and, if --push is specified, pushes it to the remote too β and --open, which does the whole opening-the-next-development-cycle thing we described earlier. slay.
in all the modes that perform a commit: if the project's repository index already has other changes in it, then the commit message gets automatically opened for editing unless --no-edit is specified. and if you want the commit message opened even when there are no other changes? that's what the --edit option is for. iykyk π
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're doing and only releases these packages. all the packages being released must have the same version, but they may have different revisions. no drama there β¨
π RELEASE OPTIONS π
--revisionβ release a new package revision instead of a new version. glow-up, but for your version number π--no-commitβ don't commit the changes. this one implies--no-tagand, in the version release mode, also implies--no-open.--no-tagβ don't tag the release commit. you can always tag later using the--tagmode option, no rush bestie.--tagβ tag the version that's already released instead of releasing a new one.--current-tagaction β tells release what to do with an existing tag for the current version when tagging a new revision. the valid values arekeep(the default),update, andremove.--pushβ push the committed changes and tags to the remote. send it π--show-pushβ print the push command instead of actually executing it. this lets you peek at 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. you can do the opening later using the--openmode 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 brand new one.--squashnum β release a revision by squashing the specified number of previous commits and then amending the result. requires the--amendoption 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 not0(bugfix release series).--open-minorβ open the development cycle with the next minor version. this is the default if the current patch version is0(feature release series).--open-majorβ open the development cycle with the next major version.--open-baseversion β open the development cycle with the specified version. the base version should be in themajor.minor.patchform, with the opened version becomingmajor.minor.patch-a.0.z.--editβ open the commit message for editing.--no-editβ don't open the commit message for editing.--forcecheck β force releasing, disabling the specified check. repeat this option to disable multiple checks. (live your truth, but maybe read the warnings first π)--yes|-yβ don't prompt for confirmation before releasing.--directory|-ddir β assume the project/package is in the specified directory rather than in the current working directory.
π COMMON OPTIONS π
these are the shared ones, summarized below β the full detailed version lives over in bdep-common-options(1) if you wanna go deeper π«Ά
-vβ print essential underlying commands being executed.-Vβ print all underlying commands being executed.--quiet|-qβ run quietly, only printing error messages. shhh π€«--verboselevel β set the diagnostics verbosity to level between0and6.--stdout-formatformat β representation format to use for printing to stdout.--jobs|-jnum β 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.--bpkgpath β the package manager program to be used for build configuration management.--bpkg-optionopt β additional option to be passed to the package manager program.--buildpath β the build program to be used to build packages.--build-optionopt β additional option to be passed to the build program.--curlpath β the curl program to be used for network operations.--curl-optionopt β additional option to be passed to the curl program.--pagerpath β the pager program to be used to show long text.--pager-optionopt β additional option to be passed to the pager program.--options-filefile β read additional options from file.--default-optionsdir β the directory to load additional default options files from.--no-default-optionsβ don't load default options files.
π§ DEFAULT OPTIONS FILES π§
head over to bdep-default-options-files(1) for the full overview of default options files. for the release command specifically, 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)
and the following release command options cannot be specified in the default options files, bestie:
--directory|-d
--revision
--open
--tag
π BUGS π
send bug reports to the users@build2.org mailing list. we love a good bug report, fr fr π
π COPYRIGHT π
Copyright (c) 2014-2024 the build2 authors.
Permission is granted to copy, distribute and/or modify this document under the terms of the MIT License.
and that's the whole page, bestie π this was bdep version 0.17.0, dated June 2024, and honestly? iconic. go release something gorgeous πβ¨π¦
π¦ where this page comes from
- fedora 43: bdep 0.17.0-5.fc43 Β· MIT
- fedora 44: bdep 0.17.0-7.fc44 Β· MIT
- nixos 26.05: bdep 0.17.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms