From 941878e2914bdf4edc15f17a3f9c4713922e3291 Mon Sep 17 00:00:00 2001 From: Will Bradley Date: Fri, 9 Feb 2018 21:48:59 -0800 Subject: [PATCH] When we have merged_at info, just use that, because a PR's merge event commit date seems to merely be the date of the last commit, which is often very different than the date the PR was merged. --- .../generator/generator_fetcher.rb | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/github_changelog_generator/generator/generator_fetcher.rb b/lib/github_changelog_generator/generator/generator_fetcher.rb index a96020b..d9bf6e0 100644 --- a/lib/github_changelog_generator/generator/generator_fetcher.rb +++ b/lib/github_changelog_generator/generator/generator_fetcher.rb @@ -1,5 +1,4 @@ # frozen_string_literal: true - module GitHubChangelogGenerator class Generator MAX_THREAD_NUMBER = 25 @@ -49,18 +48,22 @@ module GitHubChangelogGenerator end # Fill :actual_date parameter of specified issue by closed date of the commit, if it was closed by commit. + # Or by merged_at, if that info exists. # @param [Hash] issue def find_closed_date_by_commit(issue) - unless issue["events"].nil? - # if it's PR -> then find "merged event", in case of usual issue -> fond closed date - compare_string = issue["merged_at"].nil? ? "closed" : "merged" - # reverse! - to find latest closed event. (event goes in date order) - issue["events"].reverse!.each do |event| - if event["event"].eql? compare_string - set_date_from_event(event, issue) - break + # in case of usual issue with no merge, find closed date. + if issue["merged_at"].nil? + unless issue["events"].nil? + # reverse! - to find latest closed event. (event goes in date order) + issue["events"].reverse!.each do |event| + if event["event"].eql? compare_string + set_date_from_event(event, issue) + break + end end end + else # if it's a PR, then go based on the merge event itself. + issue["actual_date"] = issue["merged_at"] end # TODO: assert issues, that remain without 'actual_date' hash for some reason. end