Skip to content
This repository has been archived by the owner on Jun 16, 2022. It is now read-only.

versioning

laher edited this page Oct 19, 2013 · 3 revisions

Package versioning

Package versioning is an important topic.

  • goxc has been designed to support semantic versioning.
  • goxc supports branch naming (use a local config override file - e.g. .goxc.local.json - to store your branch info)
  • goxc can interpolate your version number at build time (it uses a build flag for this)

Version number

The version number has been split into four optional variables.

The reason for this is to allow for branches and local versions to be labelled appropriately.

When all four variables are used, the version number would be:

<PackageVersion>-<BranchName>.<PrereleaseInfo>+b<BuildName>

Package Version

Treat the package version as the semantic versioning major.minor.patch

e.g. 0.0.1

PrereleseInfo

Typically you could use 'snapshot', 'alpha' or 'rc.1' here.

Branch Name

This is where you'd put the name of your fork, if you've forked someone's goxc project

'Branch name' isn't part of the semantic versioning standard, so we have just subsumed it into the prerelease info part of the version.

Build Number

Here you can put the build number as often used in semantic versioning.

Commandline options

  • -pv = Package Version
  • -pr = Prerelease Info
  • -br = Branch name
  • -bu = Build name

Config options

It's easiest to provide an example, as follows. In this imaginary example we have forked an existing go project which already used goxc.

The .goxc.json file contains the following version information:

	{
		"ConfigVersion": "0.9",
		"PackageVersion": "0.0.1",
		"PrereleaseInfo": "alpha"
	}

.goxc.local.json has been 'git-ignored', so you create one yourself, and here you put the Branch Name.

Here you can also overrdie the prerelease info, and add a build name, without affecting the

	{
		"ConfigVersion": "0.9",
		"PrereleaseInfo": "snapshot",
		"BranchName": "laher",
		"BuildName": "123"
	}

This will produce a version number 0.0.1-laher.snapshot+b123

Please see config for more details about .goxc config files.

Version number interpolation

goxc uses a build flag - -ldflags "-X main.VERSION 0.0.1-laher.snapshot+b123" - to interpolate your version number. This allows you to build a version number into your executable.

If you have defined a variable 'main.VERSION', then this will be populated at compile time.