diff --git a/Library/Homebrew/release_notes.rb b/Library/Homebrew/release_notes.rb index 19cdba9a17560..9a6e729d2444d 100644 --- a/Library/Homebrew/release_notes.rb +++ b/Library/Homebrew/release_notes.rb @@ -19,8 +19,13 @@ def generate_release_notes(start_ref, end_ref, markdown: false) ).lines.grep(/Merge pull request/) log_output.map! do |s| - s.gsub(%r{.*Merge pull request #(\d+) from ([^/]+)/[^>]*(>>)*}, - "https://github.com/Homebrew/brew/pull/\\1 (@\\2)") + matches = s.match(%r{.*Merge pull request #(?\d+) from (?[^/]+)/[^>]*>> - (?.*)}) + body = if matches[:body].empty? + s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp + else + matches[:body] + end + "https://github.com/Homebrew/brew/pull/#{matches[:pr]} (@#{matches[:user]}) - #{body}\n" end if markdown diff --git a/Library/Homebrew/test/release_notes_spec.rb b/Library/Homebrew/test/release_notes_spec.rb index a65e347b0a52c..d89a8e9671656 100644 --- a/Library/Homebrew/test/release_notes_spec.rb +++ b/Library/Homebrew/test/release_notes_spec.rb @@ -12,12 +12,15 @@ system "git", "commit", "--allow-empty", "-m", "Merge pull request #1 from Homebrew/fix", "-m", "Do something" system "git", "commit", "--allow-empty", "-m", "make a change" system "git", "commit", "--allow-empty", "-m", "Merge pull request #2 from User/fix", "-m", "Do something else" + system "git", "commit", "--allow-empty", "-m", "another change" + system "git", "commit", "--allow-empty", "-m", "Merge pull request #3 from User/another_change" end end describe ".generate_release_notes" do it "generates release notes" do expect(described_class.generate_release_notes("release-notes-testing", "HEAD")).to eq <<~NOTES + https://github.com/Homebrew/brew/pull/3 (@User) - Merge pull request #3 from User/another_change https://github.com/Homebrew/brew/pull/2 (@User) - Do something else https://github.com/Homebrew/brew/pull/1 (@Homebrew) - Do something NOTES @@ -25,6 +28,7 @@ it "generates markdown release notes" do expect(described_class.generate_release_notes("release-notes-testing", "HEAD", markdown: true)).to eq <<~NOTES + - [Merge pull request #3 from User/another_change](https://github.com/Homebrew/brew/pull/3) (@User) - [Do something else](https://github.com/Homebrew/brew/pull/2) (@User) - [Do something](https://github.com/Homebrew/brew/pull/1) (@Homebrew) NOTES