diff options
-rwxr-xr-x | git-cc | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ +#!/usr/bin/env ruby + +@authors = {} + +def parse_blame(line) + key, value = line.split(" ", 2) + case key + when "author" + @name = value + when "author-mail" + @mail = value + author = "\"#{@name}\" #{@mail}" + @authors[author] = true + end +end + +ARGV.each do |filename| + patch_file = File.open(filename) + patch_file.each_line do |patch_line| + @from ||= patch_line[/From (\w+)/, 1] + case patch_line + when /^---\s+(\S+)/ + @source = $1[2..-1] + when /^@@\s-(\d+),(\d+)/ + blame = `git blame --incremental -L #{$1},+#{$2} #{@source} #{@from}^ | grep author` + blame.each_line { |l| parse_blame(l.chomp) } + end + end +end + +@authors.each_key do |a| + puts a +end
\ No newline at end of file |