svu
Semantic Version Util is a tool to manage semantic versions at ease!
You can print the current version, increase patch/minor/major manually or just
get the next tag based on your git log!
Example usage:
svu
Based on the log between the latest tag and HEAD
, prints the next tag.
aliases: svu next
and svu n
$ svu
v1.3.0
Commit messages vs what they do:
Commit message |
Tag increase |
fix: fixed something |
Patch |
feat: added new button to do X |
Minor |
fix: fixed thing xyz
BREAKING CHANGE: this will break users because of blah |
Major |
fix!: fixed something |
Major |
feat!: added blah |
Major |
chore: foo |
Nothing |
svu current
Prints the latest tag.
alias: svu c
$ svu current
v1.2.3
svu major
Increases the major of the latest tag and prints it.
$ svu major
v2.0.0
svu minor
Increases the minor of the latest tag and prints it.
alias: svu m
$ svu minor
v1.3.0
svu patch
Increases the patch of the latest tag and prints it.
alias: svu p
$ svu patch
v1.2.4
Tag mode
By default svu
will get the latest tag from the current branch. Using the --tag-mode
flag this behaviour can be altered:
Flag |
Description |
Git command used under the hood |
--tag-mode current-branch |
Get latest tag from current branch. |
git describe --tags --abbrev=0 |
--tag-mode all-branches |
Get latest tag accross all branches. |
git describe --tags $(git rev-list --tags --max-count=1) |
To discard pre-release and/or build metadata information you can run your command of choice with the following flags:
Flag |
Description |
Example |
--no-metadata |
Discards pre-release and build metadata. |
v1.0.0-alpha+build.f902daf -> v1.0.0 |
--no-pre-release |
Discards pre-release metadata. |
v1.0.0-alpha -> v1.0.0 |
--no-build |
Discards build metadata. |
v1.0.0+build.f902daf -> v1.0.0 |
Force patch version increment
Setting the --force-patch-increment
flag forces a patch version increment regardless of the commit message content.
Pattern matching
By default svu
will get the latest tag, but if you are using more than just version tags you might want svu
to just look at tags matching a specific pattern. To do that you can set the --pattern
flag.
$ svu
svu: error: tag "latest" is not semantic: Invalid Semantic Version
$ svu --pattern="v*"
v1.4.0
The idea is that svu
will just print things, so its safe to run at any time.
You can create tags by wrapping it in an alias. For example, I have one like
this:
alias gtn='git tag $(svu next)'
So, whenever I want to create a tag, I just run gtn
.
Install
go get github.com/caarlos0/svu
or
brew install caarlos0/tap/svu
or
curl -sfL https://install.goreleaser.com/github.com/caarlos0/svu.sh | bash -s -- -b /usr/local/bin
Or download one from the releases tab and install manually.
Stargazers over time