diff options
Diffstat (limited to 'tool/merger.rb')
-rwxr-xr-x | tool/merger.rb | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/tool/merger.rb b/tool/merger.rb index d38f00b0fd..0d9957074f 100755 --- a/tool/merger.rb +++ b/tool/merger.rb @@ -57,11 +57,11 @@ class << Merger yield if block_given? STDERR.puts "\e[1;33m#{str} ([y]es|[a]bort|[r]etry#{'|[e]dit' if editfile})\e[0m" case STDIN.gets - when /\Aa/i then exit + when /\Aa/i then exit 1 when /\Ar/i then redo when /\Ay/i then break when /\Ae/i then system(ENV['EDITOR'], editfile) - else exit + else exit 1 end end end @@ -204,7 +204,7 @@ class << Merger if svn_mode? command = %w[svn diff --diff-cmd=diff -x -upw] else - command = %w[git diff --color] + command = %w[git diff --color HEAD] end IO.popen(command + [file].compact, &:read) end @@ -295,7 +295,8 @@ else tickets = '' end - revstr = ARGV[0].delete('^, :\-0-9a-fA-F') + revstr = ARGV[0].gsub(%r!https://github\.com/ruby/ruby/commit/|https://bugs\.ruby-lang\.org/projects/ruby-master/repository/git/revisions/!, '') + revstr = revstr.delete('^, :\-0-9a-fA-F') revs = revstr.split(/[,\s]+/) commit_message = '' @@ -323,9 +324,12 @@ 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)+/, '') - message = "\n\n#{(patch[/^Subject: (.*)\n\ndiff --git/m, 1] || "Message not found for revision: #{git_rev}\n")}" + 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}" + puts '+ git apply' - IO.popen(['git', 'apply'], 'wb') { |f| f.write(patch) } + IO.popen(['git', 'apply', '--3way'], 'wb') { |f| f.write(patch) } else default_merge_branch = (%r{^URL: .*/branches/ruby_1_8_} =~ `svn info` ? 'branches/ruby_1_8' : 'trunk') svn_src = "#{Merger::REPOS}#{ARGV[1] || default_merge_branch}" |