ruby-changes:16039
From: nobu <ko1@a...>
Date: Mon, 24 May 2010 15:10:14 +0900 (JST)
Subject: [ruby-changes:16039] Ruby:r27988 (trunk): * tool/change_maker.rb: use external diff for -p option.
nobu 2010-05-24 15:10:09 +0900 (Mon, 24 May 2010) New Revision: 27988 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27988 Log: * tool/change_maker.rb: use external diff for -p option. Modified files: trunk/tool/change_maker.rb Index: tool/change_maker.rb =================================================================== --- tool/change_maker.rb (revision 27987) +++ tool/change_maker.rb (revision 27988) @@ -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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/