diff options
| author | Takashi Kokubun <takashikkbn@gmail.com> | 2024-05-28 16:28:00 -0700 |
|---|---|---|
| committer | Takashi Kokubun <takashikkbn@gmail.com> | 2024-05-28 16:30:22 -0700 |
| commit | 2eded6cc5d08510e9bff6242bfc86d10b68a3b82 (patch) | |
| tree | 789588eee64f67a810568742735ebe05fa48bc8d | |
| parent | 24c56ed516893fe33e34f85f8807c230db20b65b (diff) | |
merger.rb: Auto-detect tickets when --ticket is not given
| -rwxr-xr-x | tool/merger.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tool/merger.rb b/tool/merger.rb index 48a021fcae..7ab163eb37 100755 --- a/tool/merger.rb +++ b/tool/merger.rb @@ -223,10 +223,11 @@ else case ARGV[0] when /--ticket=(.*)/ - tickets = $1.split(/,/).map{|num| " [Backport ##{num}]"}.join + tickets = $1.split(/,/) ARGV.shift else - tickets = '' + tickets = [] + detect_ticket = true end revstr = ARGV[0].gsub(%r!https://github\.com/ruby/ruby/commit/|https://bugs\.ruby-lang\.org/projects/ruby-master/repository/git/revisions/!, '') @@ -255,6 +256,10 @@ else end patch = resp.body.sub(/^diff --git a\/version\.h b\/version\.h\nindex .*\n--- a\/version\.h\n\+\+\+ b\/version\.h\n@@ .* @@\n(?:[-\+ ].*\n|\n)+/, '') + if detect_ticket + tickets += patch.scan(/\[(?:Bug|Feature|Misc) #(\d+)\]/i).map(&:first) + end + message = "#{(patch[/^Subject: (.*)\n---\n /m, 1] || "Message not found for revision: #{git_rev}\n")}" message.gsub!(/\G(.*)\n( .*)/, "\\1\\2") message = "\n\n#{message}" @@ -271,7 +276,7 @@ else Merger.version_up f = Tempfile.new 'merger.rb' - f.printf "merge revision(s) %s:%s", revstr, tickets + f.printf "merge revision(s) %s:%s", revstr, tickets.map{|num| " [Backport ##{num}]"}.join f.write commit_message f.flush f.close |
