mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 0b1ff93945
			
		
	
	
		0b1ff93945
		
	
	
	
	
		
			
			BASERUBY may still be 1.8.x. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
| #! ./miniruby
 | |
| 
 | |
| def diff2index(cmd, *argv)
 | |
|   lines = []
 | |
|   path = nil
 | |
|   output = `#{cmd} #{argv.join(" ")}`
 | |
|   if defined? Encoding::BINARY
 | |
|     output.force_encoding Encoding::BINARY
 | |
|   end
 | |
|   output.each_line do |line|
 | |
|     case line
 | |
|     when /^Index: (\S*)/, /^diff --git [a-z]\/(\S*) [a-z]\/\1/
 | |
|       path = $1
 | |
|     when /^@@\s*-[,\d]+ +\+(\d+)[,\d]*\s*@@(?: +([A-Za-z_][A-Za-z_0-9 ]*[A-Za-z_0-9]))?/
 | |
|       line = $1.to_i
 | |
|       ent = "\t* #{path}"
 | |
|       ent << " (#{$2})" if $2
 | |
|       lines << "#{ent}:"
 | |
|     end
 | |
|   end
 | |
|   lines.uniq!
 | |
|   lines.empty? ? nil : lines
 | |
| end
 | |
| 
 | |
| if `svnversion` =~ /^\d+/
 | |
|   cmd = "svn diff --diff-cmd=diff -x-pU0"
 | |
|   change = diff2index(cmd, ARGV)
 | |
| elsif File.directory?(".git")
 | |
|   cmd = "git diff -U0"
 | |
|   change = diff2index(cmd, ARGV) || diff2index(cmd, "--cached", ARGV)
 | |
| else
 | |
|   abort "does not seem to be under a vcs"
 | |
| end
 | |
| puts change if change
 |