summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2024-05-28 16:28:00 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2024-05-28 16:30:22 -0700
commit2eded6cc5d08510e9bff6242bfc86d10b68a3b82 (patch)
tree789588eee64f67a810568742735ebe05fa48bc8d
parent24c56ed516893fe33e34f85f8807c230db20b65b (diff)
merger.rb: Auto-detect tickets when --ticket is not given
-rwxr-xr-xtool/merger.rb11
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