Add release-branch option to filter the Pull Requests by those applied on a partcular release branch

This commit is contained in:
Steve Gilvarry 2015-11-18 16:56:27 +11:00
parent 3fdf0c64df
commit 06a8fe8169
4 changed files with 15 additions and 4 deletions

View File

@ -22,6 +22,7 @@ module GitHubChangelogGenerator
github_options[:oauth_token] = @github_token unless @github_token.nil? github_options[:oauth_token] = @github_token unless @github_token.nil?
github_options[:endpoint] = @options[:github_endpoint] unless @options[:github_endpoint].nil? github_options[:endpoint] = @options[:github_endpoint] unless @options[:github_endpoint].nil?
github_options[:site] = @options[:github_endpoint] unless @options[:github_site].nil? github_options[:site] = @options[:github_endpoint] unless @options[:github_site].nil?
@release_branch = @options[:release_branch] unless @options[:release_branch].nil?
@github = check_github_response { Github.new github_options } @github = check_github_response { Github.new github_options }
end end
@ -123,7 +124,11 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
def fetch_closed_pull_requests def fetch_closed_pull_requests
pull_requests = [] pull_requests = []
begin begin
if @options[:release_branch].nil?
response = @github.pull_requests.list @options[:user], @options[:project], state: "closed" response = @github.pull_requests.list @options[:user], @options[:project], state: "closed"
else
response = @github.pull_requests.list @options[:user], @options[:project], state: "closed", base: @options[:release_branch]
end
page_i = 0 page_i = 0
count_pages = response.count_pages count_pages = response.count_pages
response.each_page do |page| response.each_page do |page|

View File

@ -178,9 +178,11 @@ module GitHubChangelogGenerator
fetched_pr = closed_pull_requests.find do |fpr| fetched_pr = closed_pull_requests.find do |fpr|
fpr.number == pr.number fpr.number == pr.number
end end
unless fetched_pr.nil?
pr[:merged_at] = fetched_pr[:merged_at] pr[:merged_at] = fetched_pr[:merged_at]
closed_pull_requests.delete(fetched_pr) closed_pull_requests.delete(fetched_pr)
end end
end
pull_requests.select! do |pr| pull_requests.select! do |pr|
!pr[:merged_at].nil? !pr[:merged_at].nil?

View File

@ -143,6 +143,9 @@ module GitHubChangelogGenerator
opts.on("--future-release [RELEASE-VERSION]", "Put the unreleased changes in the specified release number.") do |future_release| opts.on("--future-release [RELEASE-VERSION]", "Put the unreleased changes in the specified release number.") do |future_release|
options[:future_release] = future_release options[:future_release] = future_release
end end
opts.on("--release-branch [RELEASE-BRANCH]", "Limit pull requests to the release branch, such as master or release") do |release_branch|
options[:release_branch] = release_branch
end
opts.on("--[no-]verbose", "Run verbosely. Default is true") do |v| opts.on("--[no-]verbose", "Run verbosely. Default is true") do |v|
options[:verbose] = v options[:verbose] = v
end end

View File

@ -16,7 +16,8 @@ module GitHubChangelogGenerator
bug_labels enhancement_labels bug_labels enhancement_labels
between_tags exclude_tags since_tag max_issues between_tags exclude_tags since_tag max_issues
github_site github_endpoint simple_list github_site github_endpoint simple_list
future_release verbose release_url base ) future_release release_branch verbose release_url
base )
OPTIONS.each do |o| OPTIONS.each do |o|
attr_accessor o.to_sym attr_accessor o.to_sym