Use first SHA for last tag
Rather than having the last tag be an empty husk, generate a full changelog link using the first sha from the repository. Signed-off-by: Tom Duffield <tom@chef.io>
This commit is contained in:
parent
f57b4c283d
commit
174baec266
|
@ -57,14 +57,23 @@ module GitHubChangelogGenerator
|
||||||
# @param [Array] pull_requests List or PR's in new section
|
# @param [Array] pull_requests List or PR's in new section
|
||||||
# @param [Array] issues List of issues in new section
|
# @param [Array] issues List of issues in new section
|
||||||
# @param [String] newer_tag Name of the newer tag. Could be nil for `Unreleased` section
|
# @param [String] newer_tag Name of the newer tag. Could be nil for `Unreleased` section
|
||||||
# @param [String] older_tag_name Older tag, used for the links. Could be nil for last tag.
|
# @param [String] older_tag Older tag, used for the links. Could be nil for last tag.
|
||||||
# @return [String] Ready and parsed section
|
# @return [String] Ready and parsed section
|
||||||
def create_log_for_tag(pull_requests, issues, newer_tag, older_tag_name = nil)
|
def create_log_for_tag(pull_requests, issues, newer_tag, older_tag = nil)
|
||||||
newer_tag_link, newer_tag_name, newer_tag_time = detect_link_tag_time(newer_tag)
|
newer_tag_link, newer_tag_name, newer_tag_time = detect_link_tag_time(newer_tag)
|
||||||
|
|
||||||
github_site = options[:github_site] || "https://github.com"
|
github_site = options[:github_site] || "https://github.com"
|
||||||
project_url = "#{github_site}/#{options[:user]}/#{options[:project]}"
|
project_url = "#{github_site}/#{options[:user]}/#{options[:project]}"
|
||||||
|
|
||||||
|
# If the older tag is nil, go back in time from the latest tag and find
|
||||||
|
# the SHA for the first commit.
|
||||||
|
older_tag_name =
|
||||||
|
if older_tag.nil?
|
||||||
|
@fetcher.commits_before(newer_tag_time).last["sha"]
|
||||||
|
else
|
||||||
|
older_tag["name"]
|
||||||
|
end
|
||||||
|
|
||||||
log = generate_header(newer_tag_name, newer_tag_link, newer_tag_time, older_tag_name, project_url)
|
log = generate_header(newer_tag_name, newer_tag_link, newer_tag_time, older_tag_name, project_url)
|
||||||
|
|
||||||
if options[:issues]
|
if options[:issues]
|
||||||
|
|
|
@ -83,14 +83,12 @@ module GitHubChangelogGenerator
|
||||||
def generate_log_between_tags(older_tag, newer_tag)
|
def generate_log_between_tags(older_tag, newer_tag)
|
||||||
filtered_issues, filtered_pull_requests = filter_issues_for_tags(newer_tag, older_tag)
|
filtered_issues, filtered_pull_requests = filter_issues_for_tags(newer_tag, older_tag)
|
||||||
|
|
||||||
older_tag_name = older_tag.nil? ? detect_since_tag : older_tag["name"]
|
|
||||||
|
|
||||||
if newer_tag.nil? && filtered_issues.empty? && filtered_pull_requests.empty?
|
if newer_tag.nil? && filtered_issues.empty? && filtered_pull_requests.empty?
|
||||||
# do not generate empty unreleased section
|
# do not generate empty unreleased section
|
||||||
return ""
|
return ""
|
||||||
end
|
end
|
||||||
|
|
||||||
create_log_for_tag(filtered_pull_requests, filtered_issues, newer_tag, older_tag_name)
|
create_log_for_tag(filtered_pull_requests, filtered_issues, newer_tag, older_tag)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Apply all filters to issues and pull requests
|
# Apply all filters to issues and pull requests
|
||||||
|
|
|
@ -236,6 +236,17 @@ Make sure, that you push tags to remote repo via 'git push --tags'"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Fetch all commits before certain point
|
||||||
|
#
|
||||||
|
# @return [String]
|
||||||
|
def commits_before(start_time)
|
||||||
|
commits = []
|
||||||
|
iterate_pages(@client, "commits_before", start_time.to_datetime.to_s) do |new_commits|
|
||||||
|
commits.concat(new_commits)
|
||||||
|
end
|
||||||
|
commits
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def stringify_keys_deep(indata)
|
def stringify_keys_deep(indata)
|
||||||
|
|
|
@ -526,4 +526,18 @@ describe GitHubChangelogGenerator::OctoFetcher do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#commits_before" do
|
||||||
|
context "when API is valid", :vcr do
|
||||||
|
let(:start_time) { Time.parse("Wed Mar 4 18:47:17 2015 +0200") }
|
||||||
|
|
||||||
|
subject do
|
||||||
|
fetcher.commits_before(start_time)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns commits" do
|
||||||
|
expect(subject.last["sha"]).to eq("4c2d6d1ed58bdb24b870dcb5d9f2ceed0283d69d")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user