From c5652b900823a00e1f7cccfbad62b9354e812d0f Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 24 May 2010 06:10:09 +0000 Subject: * tool/change_maker.rb: use external diff for -p option. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/change_maker.rb | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'tool') diff --git a/tool/change_maker.rb b/tool/change_maker.rb index d039de9909..b83b98428c 100755 --- a/tool/change_maker.rb +++ b/tool/change_maker.rb @@ -1,26 +1,29 @@ #! ./miniruby -if File.directory?(".svn") - cmd = "svn diff" -elsif File.directory?(".git") - cmd = "git diff" -else - abort "does not seem to be under a vcs" -end - def diff2index(cmd, *argv) + lines = [] path = nil `#{cmd} #{argv.join(" ")}`.split(/\n/).each do |line| case line when /^Index: (\S*)/, /^diff --git [a-z]\/(\S*) [a-z]\/\1/ path = $1 - when /^@@.*@@ +([A-Za-z_][A-Za-z_0-9 ]*[A-Za-z_0-9])/ - puts "* #{path} (#{$1}):" + when /^@@\s*-\d+,\d+ +\+(\d+),\d+\s*@@(?: +([A-Za-z_][A-Za-z_0-9 ]*[A-Za-z_0-9]))?/ + line = $1.to_i + ent = "* #{path}" + ent << " (#{$2})" if $2 + lines << "#{ent}:" end end - !!path + lines.uniq! + lines.empty? ? nil : lines end -if !diff2index(cmd, ARGV) and /^git/ =~ cmd - diff2index(cmd, "--cached", ARGV) +if File.directory?(".svn") + cmd = "svn diff --diff-cmd=diff -x-pU0" + puts diff2index(cmd, ARGV) +elsif File.directory?(".git") + cmd = "git diff" + puts diff2index(cmd, ARGV) || diff2index(cmd, "--cached", ARGV) +else + abort "does not seem to be under a vcs" end -- cgit v1.2.3