- subcommand
init
to init config file- init
.versionrc
file at git repository root path, as default config file
- init
{
"types": [
{
"type": "feat",
"section": "✨ Features",
"hidden": false
},
{
"type": "fix",
"section": "🐛 Bug Fixes",
"hidden": false
},
{
"type": "docs",
"section": "📝 Documentation",
"hidden": false
},
{
"type": "style",
"section": "💄 Styles",
"hidden": true
},
{
"type": "refactor",
"section": "♻ Refactor",
"hidden": false
},
{
"type": "perf",
"section": "⚡ Performance Improvements",
"hidden": false
},
{
"type": "test",
"section": "✅ Tests",
"hidden": true
},
{
"type": "build",
"section": "👷 Build System",
"hidden": false
},
{
"type": "ci",
"section": "🔧 Continuous Integration",
"hidden": true
},
{
"type": "chore",
"section": "📦 Chores",
"hidden": true
},
{
"type": "revert",
"section": "⏪ Reverts",
"hidden": false
}
],
"tag-prefix": "v"
}
- can read git root
.versionrc
for setting of change log generate- support change log item sort by
versionrc
config{{ .types[ .sort ] }}
, and default sort will auto set by this kit - more settings use
init --more
to generate.versionrc
file
- support change log item sort by
- subcommand
read-latest
read the latest change log or write latest change to file--read-latest-file
read change log file path (default: "CHANGELOG.md")--read-latest-out
flag can open output to file, not settings will not output--read-latest-out-path
write last change file path (default: "CHANGELOG.txt")
- global flag
-
--dry-run
flag can see what change of new release -
-r
or--release-as
to set release version- when not set will auto generate release version
- commit message contains
feat:
will updateMINOR
version - commit message not contains
feat:
will updateMAJOR
version
- commit message contains
- when not set will auto generate release version
-
--auto-push
flag can auto push tag to remote -
--tag-prefix
flag can change tag prefix, default will use.versionrc
configtag-prefix
-
- generate from conventional commits for semver.org
- default will update
PATCH
version - if the latest list has any
feat
message will updateMINOR
version - if you want change release version please use global flag
-r
- default will update
- auto update version resource
- project has
package.json
file, will auto updateversion
field - project has
package-lock.json
file, will try usenpm install
to updatepackage-lock.json
file - in
.versionrc
hasmonorepo-pkg-path
field as string list, will auto updatepackage.json
file inmonorepo-pkg-path
path (v1.5.+)
- project has
{
"monorepo-pkg-path": [
"pkg1",
"pkg2"
]
}
- git url scheme default is
https
can change.(v1.8+)- use cli flag
--git-info-scheme
to change git info scheme, only support: https, http - in
.versionrc
hascover-git-info-scheme
field as string, will change remote for example fill inhttp
- use cli flag
- check worktree is dirty (v1.8+)
- add flag
--skip-worktree-check
will skip check (v1.8.1+) - check repository is dirty like
git status --porcelain
- if repository has submodule, will check, like
git submodule status --recursive
- add flag
more use see convention-change-log --help
- convention change log generate from https://www.conventionalcommits.org/
- for semver 2.0.0
- The convention commit log generation configuration file is customized under each project through
.versionrc
# install at $(GO_PATH)/bin
$ go install -v github.com/convention-change/convention-change-log/cmd/convention-change-log@latest
# install version v1.8.1
$ go install -v github.com/convention-change/convention-change-log/cmd/convention-change-log@v1.8.1
-
or install by release and add environment variables
PATH
-
please use this tool in
git repository root path
## initialize configuration
# generate configuration in git repository root path
$ convention-change-log init
# files will be added `.versionrc`
## To generate the change log, this must run the repository root path and the project must be managed by git.
# it is recommended to be implemented every time --dry-run check to prevent errors
# with dry run
# after v1.7.0, it is turned on by default --dry-run
# If the flag `-r` is not set, the type `feat` will be determined according to whether the commit contains'
# if there is a log of type `feat`,then increment the MINOR version
# if there is no log of type `feat`, then increment the PATCH version
$ convention-change-log --dry-run
# --skip-worktree-check will skip check worktree (v1.8.1+)
$ convention-change-log --dry-run --skip-worktree-check
# flat -r to set custom release version
$ convention-change-log -r 0.1.0 --dry-run
# change tag prefix
$ convention-change-log -r 0.1.0 -t "" --dry-run
# disable --dry-run mode to generate logs and tags locally
$ convention-change-log --dry-run false
# or using env CLI_DRY_RUN_DISABLE=true can also be closed
$ convention-change-log --dry-run-disable
# you can also write like this
$ convention-change-log -r 1.0.0 --dry-run-disable
# more practical automatic push to remote, after v1.7.0, open --auto-push will ignore --dry-run
$ convention-change-log --auto-push
## read-latest can read the latest change log
# read and output to stdout
$ convention-change-log read-latest
# read and output to file `CHANGELOG.txt`
$ convention-change-log read-latest --read-latest-out
# read output to a custom file
$ convention-change-log read-latest --read-latest-out --read-latest-out-path CHANGELOG-1.txt
- set
convention-change-log
to as aliasccl
, bash or zsh as
alias gcmpt='git checkout $(git_main_branch) && git pull --verbose && git fetch --tags'
alias ccl='convention-change-log'
- powershell set in
$PROFILE
file
## alias gcmpt 'git checkout $(git_main_branch) && git pull && git fetch --tags'
Function GitCheckOutMainAndFetchAllTagsFun {git checkout $(git config --get init.defaultBranch) ; git pull --verbose; git fetch --tags}
Set-Alias -Name gcmpt -Value GitCheckOutMainAndFetchAllTagsFun
## need install https://github.com/convention-change/convention-change-log
# alias ccl='convention-change-log'
Set-Alias -Name ccl -Value convention-change-log
- Please set up the
branch protection rule
andtag protection rule
in the remote warehouse first to prevent false submission or delete tag - Before generating CHANGELOG.md, it is best to merge into the main branch, the alias above
gcmpt
You can quickly switch to the main branch and synchronize to the latest information (including tag synchronization) - Check the status of the current branch is available after the nail version
- execution
ccl --dry-run
orccl --dry-run -r 1.2.3
Specify the target version and verify that the expected change log is correct - after confirming that there are no errors execute
ccl --auto-push
- It is recommended to use the
release
branch to automatically merge and trigger CI automatic production to trigger the generation of CHANGELOG.md to avoid thinking that the operation is wrong.
We welcome community contributions to this project.
Please read Contributor Guide for more information on how to get started.
请阅读有关 贡献者指南 以获取更多如何入门的信息
developer see doc at doc/dev.md