git-chlog 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/exe/git-chlog +66 -20
- data/lib/git/chlog/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd4344829226d0ef8ee4b1114eaa0e51f42f28d0
|
4
|
+
data.tar.gz: c8bca581e886d709df04b2381dbf8936f3548424
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d933a5420529b961a21f04dabeb35aeef17216f807df696d5a9e6f21f2aa5429119909b6aac78597a73e8ab8a34be5af5fdf1e822ce69f657cb05c16a780e2c9
|
7
|
+
data.tar.gz: e05b442fbdb33afed083aa6e3eafbf4ec4a73f9aadb018becc1845a26e79dd172dbd724e27d90480cc0c30923dddf52359af6d07592df05e83b6fe30ac406b4f
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Change Log
|
2
|
+
## [v0.2.0](https://github.com/teohm/git-chlog/tree/v0.2.0)
|
3
|
+
|
4
|
+
[Full Changelog](https://github.com/teohm/git-chlog/compare/v0.1.0...v0.2.0)
|
5
|
+
* 2017-11-02 - Fix GitRepo#prev_tag to handle HEAD release [#5](https://github.com/teohm/git-chlog/pull/5)
|
6
|
+
* 2017-11-02 - Add --prepare-release to include unreleased merges when prepare release [#4](https://github.com/teohm/git-chlog/pull/4)
|
7
|
+
|
2
8
|
## [v0.1.0](https://github.com/teohm/git-chlog/tree/v0.1.0)
|
3
|
-
Released on 2017-11-01
|
4
9
|
|
5
10
|
[Full Changelog](https://github.com/teohm/git-chlog/compare/6bcc2fb6e...v0.1.0)
|
6
11
|
* 2017-11-01 - fix :allowed_push_host metadata in gemspec [#3](https://github.com/teohm/git-chlog/pull/3)
|
data/exe/git-chlog
CHANGED
@@ -74,12 +74,18 @@ module CodeHosting
|
|
74
74
|
end
|
75
75
|
|
76
76
|
class Release
|
77
|
-
attr_reader :tag, :date
|
77
|
+
attr_reader :tag, :git_ref, :label, :date
|
78
78
|
attr_accessor :prev_tag
|
79
79
|
|
80
|
-
def
|
80
|
+
def self.build_head(tag:, label:)
|
81
|
+
Release.new(tag: tag, date: Time.now, git_ref: "HEAD", label: label)
|
82
|
+
end
|
83
|
+
|
84
|
+
def initialize(tag:, date:, git_ref: nil, label: nil)
|
81
85
|
@tag = tag
|
82
|
-
@
|
86
|
+
@git_ref = git_ref || tag
|
87
|
+
@label = label || tag
|
88
|
+
@date = Time.parse(date.to_s)
|
83
89
|
end
|
84
90
|
|
85
91
|
def version_number
|
@@ -91,16 +97,22 @@ class Release
|
|
91
97
|
end
|
92
98
|
end
|
93
99
|
|
94
|
-
|
95
|
-
|
100
|
+
class GitRepo
|
101
|
+
attr_reader :options
|
102
|
+
|
103
|
+
def initialize(options = {})
|
104
|
+
@options = options.dup
|
105
|
+
end
|
106
|
+
|
107
|
+
def origin_remote_url
|
96
108
|
`git remote get-url origin`.strip
|
97
109
|
end
|
98
110
|
|
99
|
-
def
|
111
|
+
def first_commit_sha
|
100
112
|
`git rev-list --max-parents=0 HEAD`.strip[0...9]
|
101
113
|
end
|
102
114
|
|
103
|
-
def
|
115
|
+
def prev_tag(current_tag)
|
104
116
|
`git log --format="%D" #{current_tag}~1`
|
105
117
|
.split("\n")
|
106
118
|
.select { |line| line.start_with?("tag:") }
|
@@ -108,36 +120,50 @@ module GitRepo
|
|
108
120
|
&.match(/tag: ([^,]+)/)&.captures&.first
|
109
121
|
end
|
110
122
|
|
111
|
-
def
|
112
|
-
LoadReleases.new(
|
123
|
+
def load_releases
|
124
|
+
LoadReleases.new(
|
125
|
+
git_repo: self,
|
126
|
+
head_release_tag: options[:prepare_release]
|
127
|
+
).call
|
113
128
|
end
|
114
129
|
|
115
|
-
def
|
130
|
+
def load_merged_requests(release, code_hosting)
|
116
131
|
LoadMergedRequests.new(
|
117
132
|
release: release, code_hosting: code_hosting
|
118
133
|
).call
|
119
134
|
end
|
120
135
|
|
121
136
|
class LoadReleases
|
122
|
-
attr_reader :git_repo
|
137
|
+
attr_reader :git_repo, :head_release_tag
|
123
138
|
|
124
|
-
def initialize(git_repo:)
|
139
|
+
def initialize(git_repo:, head_release_tag:)
|
125
140
|
@git_repo = git_repo
|
141
|
+
@head_release_tag = head_release_tag
|
126
142
|
end
|
127
143
|
|
128
144
|
def call
|
129
145
|
raw_git_tag_data
|
130
146
|
.map { |release_params| Release.new(release_params) }
|
147
|
+
.sort
|
148
|
+
.reverse
|
149
|
+
.unshift(head_release)
|
150
|
+
.compact
|
131
151
|
.map { |release|
|
132
|
-
release.prev_tag = git_repo.prev_tag(release.
|
152
|
+
release.prev_tag = git_repo.prev_tag(release.git_ref)
|
133
153
|
release
|
134
154
|
}
|
135
|
-
.sort
|
136
|
-
.reverse
|
137
155
|
end
|
138
156
|
|
139
157
|
private
|
140
158
|
|
159
|
+
def head_release
|
160
|
+
if head_release_tag
|
161
|
+
Release.build_head(tag: head_release_tag, label: head_release_tag)
|
162
|
+
else
|
163
|
+
nil
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
141
167
|
def raw_git_tag_data
|
142
168
|
`git tag --format='%(refname:short)|%(creatordate:iso8601)'`
|
143
169
|
.split("\n")
|
@@ -169,7 +195,7 @@ module GitRepo
|
|
169
195
|
end
|
170
196
|
|
171
197
|
def tag_range
|
172
|
-
[release.
|
198
|
+
[release.git_ref, release.prev_tag].compact.join("...")
|
173
199
|
end
|
174
200
|
|
175
201
|
def is_merge_request?(raw_commit)
|
@@ -229,8 +255,7 @@ class PrintChangeLog
|
|
229
255
|
private
|
230
256
|
|
231
257
|
def print_release_heading(out, release)
|
232
|
-
out.puts("## [#{release.
|
233
|
-
out.puts("Released on #{format_date(release.date)}")
|
258
|
+
out.puts("## [#{release.label}](#{code_hosting.tag_url(release.tag)})")
|
234
259
|
end
|
235
260
|
|
236
261
|
def print_full_changelog_link(out, release)
|
@@ -272,8 +297,29 @@ class PrintChangeLog
|
|
272
297
|
end
|
273
298
|
end
|
274
299
|
|
300
|
+
options = {
|
301
|
+
prepare_release: false
|
302
|
+
}
|
303
|
+
|
304
|
+
require 'optparse'
|
305
|
+
OptionParser.new do |opts|
|
306
|
+
opts.banner = "Usage: git chlog [options]"
|
307
|
+
|
308
|
+
opts.on(
|
309
|
+
"--prepare-release=[TAG]",
|
310
|
+
"Add unreleased changes when preparing new release") do |tag|
|
311
|
+
options[:prepare_release] = tag || "HEAD"
|
312
|
+
end
|
313
|
+
|
314
|
+
opts.on("-h", "--help", "Prints this help") do
|
315
|
+
puts opts
|
316
|
+
exit
|
317
|
+
end
|
318
|
+
end.parse!
|
319
|
+
|
320
|
+
git_repo = GitRepo.new(options)
|
275
321
|
PrintChangeLog.new(
|
276
|
-
code_hosting: CodeHosting.build(
|
277
|
-
git_repo:
|
322
|
+
code_hosting: CodeHosting.build(git_repo.origin_remote_url),
|
323
|
+
git_repo: git_repo,
|
278
324
|
issue_tracker: IssueTracker::PivotalTracker
|
279
325
|
).call
|
data/lib/git/chlog/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-chlog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huiming Teo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|