Skip to content

linkdata/gitsemver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

build coverage goreport Docs

gitsemver

Build a semver compliant version string for a git repository.

Using tree hashes it returns the latest matching semver tag. If no tree hash match exactly, it falls back to the latest semver tag reachable from the current HEAD.

If the match is not exact or the current branch is not the default branch or a protected branch (CI_COMMIT_REF_PROTECTED or GITHUB_REF_PROTECTED are set), it creates a work-in-progress semver string like v0.1.2-myfeature.123.

Supports raw git repositories as well as GitLab and GitHub builders.

Installing

$ go install github.com/linkdata/gitsemver@latest

Command line parameters

Usage of gitsemver:
  -debug
        write debug info to stderr
  -git string
        path to Git executable (default "git")
  -gopackage
        write Go source with PkgName and PkgVersion
  -incpatch
        increment the patch level and create a new tag
  -name string
        override the Go PkgName, default is to use last portion of module in go.mod
  -nofetch
        don't fetch remote tags
  -nonewline
        don't print a newline after the output
  -out string
        write to file instead of stdout (relative paths are relative to repo)

Examples

Print current version of a git repository

$ gitsemver $HOME/myreleasedpackage
v1.2.3

Increment the patch level and push a new lightweight tag to the origin

$ gitsemver
v1.2.3-main.456
$ gitsemver -incpatch
v1.2.4

Generate a go package file with version information

//go:generate go run github.com/linkdata/gitsemver@latest -gopackage -out version.gen.go

Generates a file called version.gen.go with contents like

// Code generated by gitsemver at 2025-02-10 07:47:15 UTC DO NOT EDIT.
// branch "mybranch", build 456
package mypackage

const PkgName = "mypackage"
const PkgVersion = "v1.2.3-mybranch.456"

About

Build a semver compliant version string for a git repository

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages