Project

versioneer

0.0
No commit activity in last 3 years
No release in over 3 years
Dynamic project versioning (alpha/beta/rc) based on commits since last Git tag.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.13
>= 0
 Project Readme

Versioneer

Gem Version Build Status Build status Code Climate Test Coverage

Dynamic project versioning (alpha/beta/rc) from commits since last Git Tag.

Versioneer determines a project's version from the latest source-control tag, then adjusts automatically by adding/bumping prereleases based on changes made since the last tagged release.

Integration tested on UNIX/macOS and Windows. Matrix testing for Ruby 1.82.3

Overview

Project versions update automatically based on VCS changes and where the code has been deployed. The table below depicts the default settings; the prerelease workflow is customizable through code or a project config file.

VCS State Last Tag/Release Development Ver. Production Ver.
No changes since last tag v0.1.0 0.1.0 Same as Tag 0.1.0 Same as Tag
Uncommitted changes v0.1.0 0.2.alpha1 0.1.0 Same as Tag
First commit v0.1.0 0.2.beta1 0.2.rc1 or 0.1.1
First commit + Changes v0.1.0 0.2.alpha2 0.2.rc1 or 0.1.1
Second commit v0.1.0 0.2.beta2 0.2.rc2 or 0.1.2
Tag previous commit v0.2.0 0.2.0 0.2.0

Usage

  • Available from Command-Line or Ruby
  • Project-level configuration using a .versioneer.yml file
  • The Versioneer environment is selected from the following system variables:
    • Any value other than "production" is assumed to be "development"
ENV['VERSIONEER_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['ENV']

Command-Line

$ git tag -am 'Release' v0.1
$ versioneer print
0.1
...
$ git commit --allow-empty -m 'Some changes.'
$ versioneer status
DEVELOPMENT -> 0.2.beta1    
 PRODUCTION -> 0.2.rc1    
...
$ versioneer --help

Ruby Project (Rails, Rack, RubyGem, etc.)

Generic installation, adapt as necessary. See the Versioneer Wiki for more.

  • Add Versioneer to your Gemfile
gem 'versioneer', '~> 0.1'
...
$ bundle install
  • Generate a config file
$ bundle exec versioneer init
...
Generating config
+ .versioneer.yml
  • Modify your project's version variable
$ vim config/version.rb

require 'versioneer'
module MyApp
  # Configure versioneer with the project's root path:
  VERSION = Versioneer::Config.new(File.expand_path('../../', __FILE__)).to_s
end

Settings & Customization

Please refer to the Versioneer Wiki for full documentation.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/binarybabel/gem-versioneer.

License

The gem is available as open source under the terms of the MIT License.