mirror of
https://github.com/thegeeklab/git-sv.git
synced 2024-11-24 11:10:39 +00:00
Semantic versioning tool for git based on conventional commits
.github/workflows | ||
cmd/git-sv | ||
sv | ||
.gitignore | ||
go.mod | ||
go.sum | ||
LICENSE | ||
Makefile | ||
README.md |
sv4git
Semantic version for git
Getting Started
Installing
download the latest release and add the binary on your path
Config
you can config using the environment variables
Variable | description | default |
---|---|---|
SV4GIT_MAJOR_VERSION_TYPES | types used to bump major version | |
SV4GIT_MINOR_VERSION_TYPES | types used to bump minor version | feat |
SV4GIT_PATCH_VERSION_TYPES | types used to bump patch version | build,ci,chore,docs,fix,perf,refactor,style,test |
SV4GIT_INCLUDE_UNKNOWN_TYPE_AS_PATCH | force patch bump on unknown type | true |
SV4GIT_BRAKING_CHANGE_PREFIXES | list of prefixes that will be used to identify a breaking change | BREAKING CHANGE:,BREAKING CHANGES: |
SV4GIT_ISSUEID_PREFIXES | list of prefixes that will be used to identify an issue id | jira:,JIRA:,Jira: |
SV4GIT_TAG_PATTERN | tag version pattern | %d.%d.%d |
SV4GIT_RELEASE_NOTES_TAGS | release notes headers for each visible type | fix:Bug Fixes,feat:Features |
SV4GIT_VALIDATE_MESSAGE_SKIP_BRANCHES | ignore branches from this list on validate commit message | master,develop |
SV4GIT_COMMIT_MESSAGE_TYPES | list of valid commit types for commit message | build,ci,chore,docs,feat,fix,perf,refactor,revert,style,test |
SV4GIT_ISSUE_KEY_NAME | metadata key name used on validate commit message hook to enhance footer, if blank footer will not be added | jira |
SV4GIT_ISSUE_REGEX | issue id regex, if blank footer will not be added | [A-Z]+-[0-9]+ |
SV4GIT_BRANCH_ISSUE_REGEX | regex to extract issue id from branch name, must have 3 groups (prefix, id, posfix), if blank footer will not be added | ^([a-z]+\/)?([A-Z]+-[0-9]+)(-.*)? |
Running
run git-sv
to get the list of available parameters
git-sv
Run as git command
if git-sv
is configured on your path, you can use it like a git command
git sv
git sv current-version
git sv next-version
Usage
use --help
or -h
to get usage information, dont forget that some commands have unique options too
# sv help
git-sv -h
# sv release-notes command help
git-sv rn -h
Available commands
Variable | description | has options |
---|---|---|
current-version, cv | get last released version from git | ❌ |
next-version, nv | generate the next version based on git commit messages | ❌ |
commit-log, cl | list all commit logs since last version as jsons | ✔️ |
release-notes, rn | generate release notes | ✔️ |
changelog, cgl | generate changelog | ✔️ |
tag, tg | generate tag with version based on git commit messages | ❌ |
commit, cmt | execute git commit with convetional commit message helper | ❌ |
validate-commit-message, vcm | use as prepare-commit-message hook to validate commit message | ✔️ |
help, h | shows a list of commands or help for one command | ❌ |
Use validate-commit-message as prepare-commit-msg hook
Configure your .git/hooks/prepare-commit-msg
#!/bin/sh
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
git sv vcm --path "$(pwd)" --file $COMMIT_MSG_FILE --source $COMMIT_SOURCE
tip: you can configure a directory as your global git templates using the command below, check git config docs for more information!
git config --global init.templatedir '<YOUR TEMPLATE DIR>'
Development
Makefile
run make
to get the list of available actions
make
Make configs
Variable | description |
---|---|
BUILDOS | build OS |
BUILDARCH | build arch |
ECHOFLAGS | flags used on echo |
BUILDENVS | var envs used on build |
BUILDFLAGS | flags used on build |
Parameters | description |
---|---|
args | parameters that will be used on run |
#variables
BUILDOS="linux" BUILDARCH="amd64" make build
#parameters
make run args="-h"
Build
make build
the binary will be created on bin/$BUILDOS_$BUILDARCH/git-sv
Tests
make test
Run
#without args
make run
#with args
make run args="-h"