release-it
release-it copied to clipboard
Cannot understand how release verison is calculated
Hi everyone, just having some confusion about how release-it is calculating the next version number.
This is the release-it.json file:
{
"git": {
"commitMessage": "chore: release v${version}",
"changelog": "npx auto-changelog --stdout --commit-limit false --unreleased --template https://raw.githubusercontent.com/release-it/release-it/main/templates/changelog-compact.hbs",
"requireCleanWorkingDir": false
},
"npm": false,
"gitlab": {
"release": true
},
"hooks": {
"before:init": "git fetch --prune --prune-tags origin",
"after:bump": "npx auto-changelog -p app/package.json --output CHANGELOG.md --template keepachangelog"
}
}
I have a package.json file located under app/package.json
:
{
"name": "ts-cli",
"description": "Test cli",
"version": "0.7.3",
....
The latest git tags:
0.4.3
0.4.4
0.4.5
0.5.0
0.6.0
0.6.1
0.6.2
0.7.0
0.7.1
0.7.2
0.7.3
0.7.3-dev.0
0.7.3-dev.1
0.7.3-dev.2
0.7.3-dev.3
0.7.3-dev.4
As you can see there are many dev releases done before the 0.7.3
, now I want to release a 0.7.4
but when I run release-it
it happens this:
❯ npx release-it --dry-run --release-version
! git fetch --prune --prune-tags origin
$ git rev-parse --abbrev-ref HEAD
$ git config --get branch.develop.remote
$ git remote get-url origin
! git fetch
$ git rev-parse --abbrev-ref HEAD [cached]
$ git describe --tags --match=* --abbrev=0
$ git symbolic-ref HEAD
$ git for-each-ref --format="%(upstream:short)" refs/heads/develop
$ git rev-parse --abbrev-ref HEAD [cached]
$ git config --get branch.develop.remote [cached]
$ git remote get-url origin [cached]
! git fetch
$ git rev-parse --abbrev-ref HEAD [cached]
$ git describe --tags --match=* --abbrev=0 [cached]
$ npx auto-changelog --stdout --commit-limit false --unreleased --template https://raw.githubusercontent.com/release-it/release-it/main/templates/changelog-compact.hbs
0.7.3
He still wants to release the 0.7.3
version.
Even the preRelease seems to be confused:
❯ npx release-it --preRelease dev --dry-run --release-version
! git fetch --prune --prune-tags origin
$ git rev-parse --abbrev-ref HEAD
$ git config --get branch.develop.remote
$ git remote get-url origin
! git fetch
$ git rev-parse --abbrev-ref HEAD [cached]
$ git describe --tags --match=* --abbrev=0
$ git symbolic-ref HEAD
$ git for-each-ref --format="%(upstream:short)" refs/heads/develop
$ git rev-parse --abbrev-ref HEAD [cached]
$ git config --get branch.develop.remote [cached]
$ git remote get-url origin [cached]
! git fetch
$ git rev-parse --abbrev-ref HEAD [cached]
$ git describe --tags --match=* --abbrev=0 [cached]
$ npx auto-changelog --stdout --commit-limit false --unreleased --template https://raw.githubusercontent.com/release-it/release-it/main/templates/changelog-compact.hbs
0.7.3-dev.5
What am I doing wrong here ?
I think if I understood correctly, if you want to handle releases such with dev or beta as preRelease you need to set the git.tagExclude
to handle them. You can read more here https://github.com/release-it/release-it/blob/main/docs/pre-releases.md
Also see https://github.com/release-it/release-it/blob/main/docs/git.md#tag-match and below
Closing due to inactivity, answers/links to docs provided.