Back in 2017, I got tired of manually checking and creating git tags.

I was running git tag to check what the latest tag is, then looking through the git log [last-tag]...HEAD to decide if I should bump major, feature, or patch, to only then run git tag [new-tag] to actually do it.

It was cumbersome, error prone, and honestly, very boring.

That’s why I created svu.

svu logo

svu logo

svu (semantic version utility) is a small tool and library that can:

  • find the latest tag
  • check the git log from that tag to HEAD
  • decide, based on the log, which portion of the version it should increase, following semver and conventional commits

It also has sub commands to increase each portion specifically, and several customization options.

Run svu --help to get a sense of it.

v3

Last week, I released its 3rd major version! This version contains a big refactor in its internals (to make it easier to maintain), dependency updates, some flags were renamed or removed, and, a big new feature: you can now create a .svu.yaml to set svu up in your repository:

# example .svu.yaml
tag.prefix: v
always: true
verbose: true

Version v3.1.0 (just released), and with it, you can also run svu init to generate a configuration file.

And then you can simply ask for the next version with:

$ svu next
found patch change: 9e692c421d8a8b706262342a14c8813a2b76d49d fix: build with go 1.24
v2.7.1

Tip

I have a alias like so in my dotfiles:

alias gtn='git tag $(svu n)'

So I can simply run:

gtn
git push --tags

v3 also introduces a logo for svu (pictured in the beginning for the post), thanks to my lovely wife.

Alternatives

If you use Go, you might be interested in gorelease (not to confuse with GoReleaser) as well. It figures out the next version based on what you changed in your code. Its more targeted at libraries, though.

svu should work regardless of language or software type, as long that you follow semver and conventional commits.

Final words

This little project has save me countless hours over the years. Ayman seems to love it as well, so it appears I’m not alone. I never talked about it here, so I figured I would - who knows, maybe you’ll like it too. 😬

Go check it out and maybe give it a star.