github_changelog_generator 1.3.10 → 1.3.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/README.md +64 -26
- data/images/logo.jpg +0 -0
- data/lib/github_changelog_generator.rb +73 -36
- data/lib/github_changelog_generator/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fefe14e9cd57e2e1be74ebe9d3f178674935cdd8
|
4
|
+
data.tar.gz: dac594490d8eb0a565c7ef1f628955e8af2aee05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9568c263c416e7dbcce25ce33fe34ce410ebc2bea82147299a9c7e28f78145d58d0d5434d1cb8200b50bc84372b8a7ff60a60f17ab8c7bb4e35598b2e16405e
|
7
|
+
data.tar.gz: 5c76d242b1b96bcc1f63aa7af0dadf379f650eb96bda90dda19b037b68560bf251a72959fe9ef9e8b4235160768795fe51e29b4072a213978ce0d0777be878db
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [1.3.10](https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.10) (2015-03-18)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.3.9...1.3.10)
|
6
|
+
|
7
|
+
**Fixed bugs:**
|
8
|
+
|
9
|
+
- Exclude closed PR's from changelog. [\#69](https://github.com/skywinder/Github-Changelog-Generator/issues/69)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Fix termination in case of empty unreleased section with `--unreleased-only` option. [\#70](https://github.com/skywinder/Github-Changelog-Generator/pull/70) ([skywinder](https://github.com/skywinder))
|
14
|
+
|
3
15
|
## [1.3.9](https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.9) (2015-03-06)
|
4
16
|
|
5
17
|
[Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.3.8...1.3.9)
|
@@ -10,7 +22,7 @@
|
|
10
22
|
|
11
23
|
**Merged pull requests:**
|
12
24
|
|
13
|
-
-
|
25
|
+
- Resolved concurrency problem in case of issues \> 2048 [\#65](https://github.com/skywinder/Github-Changelog-Generator/pull/65) ([skywinder](https://github.com/skywinder))
|
14
26
|
|
15
27
|
## [1.3.8](https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.8) (2015-03-05)
|
16
28
|
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
|
2
1
|
[![Gem Version](https://badge.fury.io/rb/github_changelog_generator.svg)](http://badge.fury.io/rb/github_changelog_generator)
|
3
|
-
[![Build Status](https://travis-ci.org/skywinder/
|
2
|
+
[![Build Status](https://travis-ci.org/skywinder/github-changelog-generator.svg?branch=master)](https://travis-ci.org/skywinder/github-changelog-generator)
|
4
3
|
|
5
|
-
GitHub Changelog Generator
|
4
|
+
GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
|
6
5
|
==================
|
7
6
|
|
8
7
|
- [Installation](#installation)
|
@@ -13,14 +12,23 @@ GitHub Changelog Generator
|
|
13
12
|
- [Features and advantages of this project](#features-and-advantages-of-this-project)
|
14
13
|
- [Alternatives](#alternatives)
|
15
14
|
- [Projects using this library](#projects-using-this-library)
|
16
|
-
- [Am I
|
15
|
+
- [Am I missing some essential feature?](#am-i-missing-some-essential-feature)
|
17
16
|
- [Contributing](#contributing)
|
18
17
|
- [License](#license)
|
19
18
|
|
20
19
|
|
21
|
-
Changelog generation has never been so easy
|
20
|
+
### Changelog generation has never been so easy:
|
21
|
+
|
22
|
+
**Fully automate changelog generation** - This gem generates change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according labels) from :octocat: GitHub Issue Tracker.
|
23
|
+
|
24
|
+
Since now you don't have to fill your `CHANGELOG.md` manually: just run the script, relax and take a cup of :coffee: before your next release! :tada:
|
22
25
|
|
23
|
-
|
26
|
+
>### *What’s the point of a change log?*
|
27
|
+
To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project.
|
28
|
+
### *Why should I care?*
|
29
|
+
Because software tools are for people. If you don’t care, why are you contributing to open source? Surely, there must be a kernel (ha!) of care somewhere in that lovely little brain of yours.
|
30
|
+
|
31
|
+
> :copyright: *[http://keepachangelog.com](http://keepachangelog.com/)*
|
24
32
|
|
25
33
|
## Installation
|
26
34
|
|
@@ -57,7 +65,7 @@ Changelog generation has never been so easy.
|
|
57
65
|
## Usage
|
58
66
|
**It's really simple**:
|
59
67
|
|
60
|
-
- If your **git remote** `origin`
|
68
|
+
- If your **git remote** `origin` refers to your GitHub repo, then just go to your project folder and run:
|
61
69
|
|
62
70
|
github_changelog_generator
|
63
71
|
|
@@ -96,7 +104,7 @@ Type `github_changelog_generator --help` for detailed usage.
|
|
96
104
|
|
97
105
|
### GitHub token
|
98
106
|
|
99
|
-
Since GitHub
|
107
|
+
Since GitHub allows you to make only 50 requests without authentication it's recommended to run this script with a token (`-t, --token` option)
|
100
108
|
|
101
109
|
**You can easily [generate it here](https://github.com/settings/applications)**.
|
102
110
|
|
@@ -115,23 +123,27 @@ So, if you got error like this:
|
|
115
123
|
It's time to create this token or wait for 1 hour before GitHub reset the counter for your IP.
|
116
124
|
|
117
125
|
##Features and advantages of this project
|
118
|
-
- Generate canonical change log file, followed by [
|
119
|
-
- Possible to generate **Unreleased** changes (closed issues that have not released yet)
|
120
|
-
- **GitHub Enterprise support** via command line options!
|
126
|
+
- Generate canonical, neat change log file, followed by [basic change log guidlines](http://keepachangelog.com/) :gem:
|
127
|
+
- Possible to generate **Unreleased** changes (closed issues that have not released yet) :dizzy:
|
128
|
+
- **GitHub Enterprise support** via command line options! :factory:
|
121
129
|
- Flexible format **customisation**:
|
122
|
-
- **Customize** issues, that **should be added** to changelog
|
123
|
-
- **Custom date format** supported
|
124
|
-
- Ability to manually specify in which version issue was fixed (in case, when closed date is not match) by setting `milestone` of issue the same name as tag of required version
|
125
|
-
-
|
126
|
-
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
|
130
|
+
- **Customize** issues, that **should be added** to changelog :eight_spoked_asterisk:
|
131
|
+
- **Custom date format** supported (but get in mind [ISO 8601](http://xkcd.com/1179/) ) :date:
|
132
|
+
- Ability to manually specify in which version issue was fixed (in case, when closed date is not match) by setting `milestone` of issue the same name as tag of required version :pushpin:
|
133
|
+
- Automatically **exclude specific issues**, not-related to change log (any issue, that has label `question` `duplicate` `invalid` `wontfix`by default) :scissors:
|
134
|
+
- **Distinguish** issues **according labels**. :mag_right:
|
135
|
+
- Merged pull requests (all `merged` pull-requests) :twisted_rightwards_arrows:
|
136
|
+
- Bug fixes (by label `bug` in issue) :beetle:
|
137
|
+
- Enhancements (by label `enhancement` in issue) :star2:
|
138
|
+
- Issues (closed issues `w/o any labels`) :non-potable_water:
|
139
|
+
|
140
|
+
- You can manually set which labels should be included/excluded. :wrench:
|
141
|
+
- Apply a lot of other customisations, to fit changelog for your personal style :tophat:
|
142
|
+
(*look `github_changelog_generator --help` for details)*
|
143
|
+
|
132
144
|
|
133
145
|
###Alternatives
|
134
|
-
Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives), that I found. But
|
146
|
+
Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives), that I found. But none satisfied my requirements.
|
135
147
|
|
136
148
|
*If you know other projects - feel free to edit this Wiki page!*
|
137
149
|
|
@@ -141,13 +153,38 @@ Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Ch
|
|
141
153
|
|
142
154
|
*If you are using `github_changelog_generator` for generation change log in your project or know another project that uses it, please add it to [this] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) list.*
|
143
155
|
|
144
|
-
## Am I
|
156
|
+
## Am I missing some essential feature?
|
157
|
+
|
158
|
+
- **Nothing is impossible!**
|
159
|
+
|
160
|
+
- Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make generator better together!
|
161
|
+
|
162
|
+
- *Bug reports, feature requests, patches, well-wishes are always welcome* :heavy_exclamation_mark:
|
163
|
+
|
164
|
+
## FAQ
|
165
|
+
|
166
|
+
- ***I already use GitHub Releases. Why do I need this?***
|
167
|
+
|
168
|
+
GitHub Releases is a very good thing. And it's very good practice to maintain it (not so much people using it yet)! :congratulations:
|
169
|
+
|
170
|
+
*BDW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)*
|
171
|
+
|
172
|
+
I'm not try to compare quality of auto-generated and manually generated logs.. but:
|
173
|
+
|
174
|
+
The auto generated Changelog really helps even if you manually fill Releases notes!
|
175
|
+
|
176
|
+
For example:
|
177
|
+
|
178
|
+
When I found a closed bug - it's very useful to understand, in which release it was fixed. In that case you can easily find this issue by \# in `CHANGELOG.md`.
|
145
179
|
|
146
|
-
|
180
|
+
- it's not so quite easy to find it in manually filled Releases notes.
|
181
|
+
- this file can also help you to build your Release note and not miss features in manually-filled list.
|
147
182
|
|
148
|
-
|
183
|
+
In the end:
|
149
184
|
|
150
|
-
|
185
|
+
I think, that GitHub Releases is more for end-users.
|
186
|
+
But `CHANGELOG.md` could stay in the repo for developers with detailed list of changes.
|
187
|
+
And it's nothing bad to combine GitHub Releases and `CHANGELOG.md` file together in that manner.
|
151
188
|
|
152
189
|
## Contributing
|
153
190
|
|
@@ -157,6 +194,7 @@ Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/n
|
|
157
194
|
4. Commit your changes (`git commit -am 'Add some feature'`)
|
158
195
|
5. Push to the branch (`git push origin my-new-feature`)
|
159
196
|
6. Create a new Pull Request
|
197
|
+
7. Profit! :white_check_mark:
|
160
198
|
|
161
199
|
## License
|
162
200
|
|
data/images/logo.jpg
ADDED
Binary file
|
@@ -27,7 +27,11 @@ module GitHubChangelogGenerator
|
|
27
27
|
github_options[:endpoint] = options[:github_endpoint] unless options[:github_endpoint].nil?
|
28
28
|
github_options[:site] = options[:github_endpoint] unless options[:github_site].nil?
|
29
29
|
|
30
|
-
|
30
|
+
begin
|
31
|
+
@github = Github.new github_options
|
32
|
+
rescue
|
33
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
34
|
+
end
|
31
35
|
|
32
36
|
@generator = Generator.new(@options)
|
33
37
|
|
@@ -88,7 +92,11 @@ module GitHubChangelogGenerator
|
|
88
92
|
issue[:actual_date] = issue[:closed_at]
|
89
93
|
else
|
90
94
|
begin
|
91
|
-
|
95
|
+
begin
|
96
|
+
commit = @github.git_data.commits.get @options[:user], @options[:project], event[:commit_id]
|
97
|
+
rescue
|
98
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
99
|
+
end
|
92
100
|
issue[:actual_date] = commit[:author][:date]
|
93
101
|
rescue
|
94
102
|
puts "Warning: can't fetch commit #{event[:commit_id]} probably it referenced from another repo."
|
@@ -110,16 +118,22 @@ module GitHubChangelogGenerator
|
|
110
118
|
if @options[:verbose]
|
111
119
|
print "Fetching merged dates...\r"
|
112
120
|
end
|
113
|
-
response = @github.pull_requests.list @options[:user], @options[:project], :state => 'closed'
|
114
|
-
|
115
121
|
pull_requests = []
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
122
|
+
begin
|
123
|
+
response = @github.pull_requests.list @options[:user], @options[:project], :state => 'closed'
|
124
|
+
page_i = 0
|
125
|
+
response.each_page do |page|
|
126
|
+
page_i += PER_PAGE_NUMBER
|
127
|
+
count_pages = response.count_pages
|
128
|
+
print "Fetching merged dates... #{page_i}/#{count_pages * PER_PAGE_NUMBER}\r"
|
129
|
+
pull_requests.concat(page)
|
130
|
+
end
|
131
|
+
rescue
|
132
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
|
123
137
|
print " \r"
|
124
138
|
|
125
139
|
@pull_requests.each { |pr|
|
@@ -276,7 +290,11 @@ module GitHubChangelogGenerator
|
|
276
290
|
end
|
277
291
|
|
278
292
|
def is_megred(number)
|
279
|
-
|
293
|
+
begin
|
294
|
+
@github.pull_requests.merged? @options[:user], @options[:project], number
|
295
|
+
rescue
|
296
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
297
|
+
end
|
280
298
|
end
|
281
299
|
|
282
300
|
def get_all_tags
|
@@ -285,20 +303,26 @@ module GitHubChangelogGenerator
|
|
285
303
|
print "Fetching tags...\r"
|
286
304
|
end
|
287
305
|
|
288
|
-
response = @github.repos.tags @options[:user], @options[:project]
|
289
|
-
|
290
306
|
tags = []
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
307
|
+
|
308
|
+
begin
|
309
|
+
response = @github.repos.tags @options[:user], @options[:project]
|
310
|
+
page_i = 0
|
311
|
+
count_pages = response.count_pages
|
312
|
+
response.each_page do |page|
|
313
|
+
page_i += PER_PAGE_NUMBER
|
314
|
+
print "Fetching tags... #{page_i}/#{count_pages * PER_PAGE_NUMBER}\r"
|
315
|
+
tags.concat(page)
|
316
|
+
end
|
317
|
+
print " \r"
|
318
|
+
if @options[:verbose]
|
319
|
+
puts "Found #{tags.count} tags"
|
320
|
+
end
|
321
|
+
rescue
|
322
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
323
|
+
end
|
324
|
+
|
325
|
+
|
302
326
|
|
303
327
|
tags
|
304
328
|
end
|
@@ -512,7 +536,11 @@ module GitHubChangelogGenerator
|
|
512
536
|
return @tag_times_hash[tag_name['name']]
|
513
537
|
end
|
514
538
|
|
515
|
-
|
539
|
+
begin
|
540
|
+
github_git_data_commits_get = @github.git_data.commits.get @options[:user], @options[:project], tag_name['commit']['sha']
|
541
|
+
rescue
|
542
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
543
|
+
end
|
516
544
|
time_string = github_git_data_commits_get['committer']['date']
|
517
545
|
@tag_times_hash[tag_name['name']] = Time.parse(time_string)
|
518
546
|
end
|
@@ -558,17 +586,22 @@ module GitHubChangelogGenerator
|
|
558
586
|
if @options[:verbose]
|
559
587
|
print "Fetching closed issues...\r"
|
560
588
|
end
|
589
|
+
issues = []
|
590
|
+
|
591
|
+
begin
|
592
|
+
response = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: nil
|
593
|
+
page_i = 0
|
594
|
+
count_pages = response.count_pages
|
595
|
+
response.each_page do |page|
|
596
|
+
page_i += PER_PAGE_NUMBER
|
597
|
+
print "Fetching issues... #{page_i}/#{count_pages * PER_PAGE_NUMBER}\r"
|
598
|
+
issues.concat(page)
|
599
|
+
end
|
600
|
+
rescue
|
601
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
602
|
+
end
|
561
603
|
|
562
|
-
response = @github.issues.list user: @options[:user], repo: @options[:project], state: 'closed', filter: 'all', labels: nil
|
563
604
|
|
564
|
-
issues = []
|
565
|
-
page_i = 0
|
566
|
-
count_pages = response.count_pages
|
567
|
-
response.each_page do |page|
|
568
|
-
page_i += PER_PAGE_NUMBER
|
569
|
-
print "Fetching issues... #{page_i}/#{count_pages * PER_PAGE_NUMBER}\r"
|
570
|
-
issues.concat(page)
|
571
|
-
end
|
572
605
|
|
573
606
|
print " \r"
|
574
607
|
|
@@ -610,7 +643,11 @@ module GitHubChangelogGenerator
|
|
610
643
|
issues.each_slice(max_thread_number) { |issues_slice|
|
611
644
|
issues_slice.each { |issue|
|
612
645
|
threads << Thread.new {
|
613
|
-
|
646
|
+
begin
|
647
|
+
obj = @github.issues.events.list user: @options[:user], repo: @options[:project], issue_number: issue['number']
|
648
|
+
rescue
|
649
|
+
puts "Warning: GitHub API rate limit exceed (5000 per hour), change log may not contain some issues.".yellow
|
650
|
+
end
|
614
651
|
issue[:events] = obj.body
|
615
652
|
print "Fetching events for issues and PR: #{i+1}/#{@issues.count + @pull_requests.count}\r"
|
616
653
|
i +=1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_changelog_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petr Korolev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- bin/github_changelog_generator
|
86
86
|
- bump_gemfile.rb
|
87
87
|
- github_changelog_generator.gemspec
|
88
|
+
- images/logo.jpg
|
88
89
|
- lib/CHANGELOG.md
|
89
90
|
- lib/github_changelog_generator.rb
|
90
91
|
- lib/github_changelog_generator/generator.rb
|
@@ -110,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
111
|
version: '0'
|
111
112
|
requirements: []
|
112
113
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.4.
|
114
|
+
rubygems_version: 2.4.3
|
114
115
|
signing_key:
|
115
116
|
specification_version: 4
|
116
117
|
summary: Script, that automatically generate changelog from your tags, issues, labels
|