git-version-bump 0 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -2
- data/README.md +14 -102
- data/Rakefile +9 -5
- data/git-version-bump.gemspec +4 -9
- data/lib/git-version-bump/rake-tasks.rb +1 -24
- data/lib/git-version-bump.rb +93 -341
- metadata +32 -36
- checksums.yaml +0 -7
- data/.github/workflows/release.yml +0 -33
- data/LICENCE +0 -674
- data/bin/git-version-bump +0 -69
- data/lib/git-version-bump/version.rb +0 -33
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,56 +1,14 @@
|
|
1
1
|
Maintain your program versions entirely within git. No local files
|
2
|
-
required!
|
2
|
+
required!
|
3
3
|
|
4
|
-
This gem contains a
|
5
|
-
|
6
|
-
|
7
|
-
use in builds and at runtime.
|
4
|
+
This gem contains a set of Rake tasks and associated code to manage the
|
5
|
+
versioning of your code via git tags. No in-repo file is required to store
|
6
|
+
your version, which reduces unnecessary duplication of information.
|
8
7
|
|
9
8
|
|
10
9
|
# Usage
|
11
10
|
|
12
|
-
|
13
|
-
line. When you bump a version, a new tag will be created representing the newly
|
14
|
-
incremented version number at the current commit. If no tags currently
|
15
|
-
exist, the previous version will be taken to be `0.0.0` and then incremented
|
16
|
-
accordingly.
|
17
|
-
|
18
|
-
|
19
|
-
## On the command line
|
20
|
-
|
21
|
-
Pretty damned trivial:
|
22
|
-
|
23
|
-
git version-bump <major|minor|patch|show>
|
24
|
-
|
25
|
-
You can also shorten the specifier to any unique substring:
|
26
|
-
|
27
|
-
git version-bump ma
|
28
|
-
git version-bump mi
|
29
|
-
git version-bump p
|
30
|
-
git version-bump s
|
31
|
-
|
32
|
-
I recommend adding an alias to your `~/.gitconfig` file, for less typing:
|
33
|
-
|
34
|
-
[alias]
|
35
|
-
vb = version-bump
|
36
|
-
|
37
|
-
You can also add your own release notes to your release tags, by using the
|
38
|
-
`-n` (or `--notes`, if you like typing) option:
|
39
|
-
|
40
|
-
git version-bump -n minor
|
41
|
-
|
42
|
-
This will open an editor, containing a list of the commits since the last
|
43
|
-
release tag, in which you can type your release notes. If you follow
|
44
|
-
standard git commit style (a "heading" line, then a blank line, followed by
|
45
|
-
free-form text) you're perfectly positioned to use
|
46
|
-
[github-release](http://theshed.hezmatt.org/github-release) to make
|
47
|
-
gorgeous-looking release announcements to Github.
|
48
|
-
|
49
|
-
|
50
|
-
## In your `Rakefile`
|
51
|
-
|
52
|
-
If you'd like to have access to the version-bumping goodness via `rake`, add
|
53
|
-
the following line to your `Rakefile`:
|
11
|
+
In your `Rakefile`, add the following line:
|
54
12
|
|
55
13
|
require 'git-version-bump/rake-tasks'
|
56
14
|
|
@@ -59,14 +17,11 @@ You will now have the following rake tasks available:
|
|
59
17
|
rake version:bump:major # bump major version (x.y.z -> x+1.0.0)
|
60
18
|
rake version:bump:minor # bump minor version (x.y.z -> x.y+1.0)
|
61
19
|
rake version:bump:patch # bump patch version (x.y.z -> x.y.z+1)
|
62
|
-
rake version:bump:show # Print current version number
|
63
|
-
|
64
|
-
(Since `version:bump:major` is a lot of typing, there are also shortcuts:
|
65
|
-
`v:b:major`, `v:b:maj`, `v:b:minor`, `v:b:min`, `v:b:patch`, `v:b:pat`, and
|
66
|
-
`v:b:p`)
|
67
|
-
|
68
20
|
|
69
|
-
|
21
|
+
By running any of those, a new tag will be created representing the newly
|
22
|
+
incremented version number at the current commit. If no tags currently
|
23
|
+
exist, the previous version will be taken to be `0.0.0` and then incremented
|
24
|
+
accordingly.
|
70
25
|
|
71
26
|
To get access to this version information in your code (such as in your
|
72
27
|
`gemspec`, or the definition of a `::VERSION` constant), you can `require
|
@@ -91,7 +46,7 @@ information available, the version will be assumed to be `0.0.0.1.ENOTAG`
|
|
91
46
|
with a date of `1970-01-01`.
|
92
47
|
|
93
48
|
|
94
|
-
|
49
|
+
## In your gemspec
|
95
50
|
|
96
51
|
Typically, you want to encode your version and commit date into your
|
97
52
|
gemspec, like this:
|
@@ -99,7 +54,7 @@ gemspec, like this:
|
|
99
54
|
Gem::Specification.new do |s|
|
100
55
|
s.version = GVB.version
|
101
56
|
s.date = GVB.date
|
102
|
-
|
57
|
+
|
103
58
|
...
|
104
59
|
end
|
105
60
|
|
@@ -110,61 +65,18 @@ system was built from pristine sources, or with that experimental patch you
|
|
110
65
|
were trying out...
|
111
66
|
|
112
67
|
|
113
|
-
|
68
|
+
## In your gem
|
114
69
|
|
115
70
|
If, like me, you're one of those people who likes to be able to easily see
|
116
|
-
what version of a library
|
71
|
+
what version of a library I'm running, then you probably like to define a
|
117
72
|
`VERSION` constant somewhere in your gem's namespace. That, too, is simple
|
118
73
|
to do:
|
119
74
|
|
120
75
|
require 'git-version-bump'
|
121
|
-
|
76
|
+
|
122
77
|
class Foobar
|
123
78
|
VERSION = GVB.version
|
124
79
|
end
|
125
80
|
|
126
81
|
This will work correctly inside your git tree, and also in your installed
|
127
82
|
gem. Magical!
|
128
|
-
|
129
|
-
#### For projects using lite tags
|
130
|
-
|
131
|
-
If you are using GitHub releases for your project or some other method that
|
132
|
-
involves light tags (tags with no annotations), you might notice that these
|
133
|
-
tags are not detected by git-version-bump by default. If you want these
|
134
|
-
commits to be detected then use the following configuration:
|
135
|
-
|
136
|
-
require 'git-version-bump'
|
137
|
-
|
138
|
-
class Foobar
|
139
|
-
# First parameter is use_local_git, second is include_lite_tags
|
140
|
-
VERSION = GVB.version(false, true)
|
141
|
-
end
|
142
|
-
|
143
|
-
|
144
|
-
## Overriding the version
|
145
|
-
|
146
|
-
In very rare circumstances, while running in a git repo, you may wish to explicitly set the version or date returned by `GVB.version` or `GVB.date`, respectively.
|
147
|
-
This can be done by setting the repo's `versionBump.versionOverride` or `versionBump.dateOverride` config values, like so:
|
148
|
-
|
149
|
-
```bash
|
150
|
-
git config versionBump.versionOverride 1.2.3
|
151
|
-
git config versionBump.dateOverride 1970-01-01
|
152
|
-
```
|
153
|
-
|
154
|
-
Note that whatever you set those values to is used without validity checking; if you set it to something weird, you'll get weird results.
|
155
|
-
|
156
|
-
|
157
|
-
# Contributing
|
158
|
-
|
159
|
-
Send your pull requests to the [Github
|
160
|
-
repo](https://github.com/mpalmer/git-version-bump), or send patches to
|
161
|
-
`theshed+git-version-bump@hezmatt.org`. Bug reports can be sent to the same
|
162
|
-
place, although I greatly prefer patches.
|
163
|
-
|
164
|
-
|
165
|
-
# Licence
|
166
|
-
|
167
|
-
Unless otherwise specified, all code in this repository is licenced under
|
168
|
-
the terms of the GNU Public Licence, version 3, as published by the Free
|
169
|
-
Software Foundation. The full terms of this licence can be found in the
|
170
|
-
file LICENCE.
|
data/Rakefile
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
+
require_relative 'lib/git-version-bump/rake-tasks'
|
4
|
+
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
3
12
|
|
4
13
|
Bundler::GemHelper.install_tasks
|
5
14
|
|
@@ -10,8 +19,3 @@ Rake::RDocTask.new do |rd|
|
|
10
19
|
rd.title = 'git-version-bump'
|
11
20
|
rd.rdoc_files.include("README.md", "lib/**/*.rb")
|
12
21
|
end
|
13
|
-
|
14
|
-
task :release do
|
15
|
-
sh "git push --follow-tags"
|
16
|
-
sh "git release"
|
17
|
-
end
|
data/git-version-bump.gemspec
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require 'git-version-bump'
|
1
|
+
require File.expand_path('../lib/git-version-bump', __FILE__)
|
4
2
|
|
5
3
|
Gem::Specification.new do |s|
|
6
4
|
s.name = "git-version-bump"
|
@@ -8,18 +6,15 @@ Gem::Specification.new do |s|
|
|
8
6
|
s.version = GVB.version
|
9
7
|
s.date = GVB.date
|
10
8
|
|
11
|
-
s.platform
|
12
|
-
s.required_ruby_version = ">= 2.1.0"
|
9
|
+
s.platform = Gem::Platform::RUBY
|
13
10
|
|
14
|
-
s.homepage = "
|
11
|
+
s.homepage = "http://theshed.hezmatt.org/git-version-bump"
|
15
12
|
s.summary = "Manage your app version entirely via git tags"
|
16
13
|
s.authors = ["Matt Palmer"]
|
17
14
|
|
18
15
|
s.extra_rdoc_files = ["README.md"]
|
19
16
|
s.files = `git ls-files`.split("\n")
|
20
|
-
|
21
|
-
|
22
|
-
s.add_development_dependency 'github-release'
|
17
|
+
|
23
18
|
s.add_development_dependency 'rake'
|
24
19
|
s.add_development_dependency 'bundler'
|
25
20
|
s.add_development_dependency 'rdoc'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../git-version-bump'
|
2
2
|
|
3
3
|
namespace :version do
|
4
4
|
namespace :bump do
|
@@ -22,28 +22,5 @@ namespace :version do
|
|
22
22
|
|
23
23
|
puts "Version is now #{GVB.version}"
|
24
24
|
end
|
25
|
-
|
26
|
-
desc "Print current version"
|
27
|
-
task :show do
|
28
|
-
puts GVB.version
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
namespace :v do
|
34
|
-
namespace :b do
|
35
|
-
task :major => "version:bump:major"
|
36
|
-
task :maj => "version:bump:major"
|
37
|
-
|
38
|
-
task :minor => "version:bump:minor"
|
39
|
-
task :min => "version:bump:minor"
|
40
|
-
|
41
|
-
task :patch => "version:bump:patch"
|
42
|
-
task :pat => "version:bump:patch"
|
43
|
-
task :p => "version:bump:patch"
|
44
|
-
|
45
|
-
task :show => "version:bump:show"
|
46
|
-
task :sh => "version:bump:show"
|
47
|
-
task :s => "version:bump:show"
|
48
25
|
end
|
49
26
|
end
|