My custom cccmd
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Oct 15, 2009, 13:20 UTC
- Message-ID
- <94a0d4530910150620g733bdf0aq88660053f869b0a9@mail.gmail.com>
Hi,
I love the new option to run a cccmd and how good it works on the linux kernel, but I couldn't find a generic script. So I decided to write my own.
It's very simple, it just looks into the authors of the commits that modified the lines being overridden (git blame). It's not checking for s-o-b, or anything fancy.
Comments?
#!/usr/bin/env ruby
@commits = {} # keeps a count of commits per authorARGV.each do |filename|
File.open(filename) do |patch_file|
patch_file.each_line do |patch_line|
case patch_line
when /^---\s+(\S+)/
@source = $1[2..-1]
when /^@@\s-(\d+),(\d+)/
blame = `git blame -p -L #{$1},+#{$2} #{@source} | grep author`
blame.each_line do |al|
key, value = al.chomp.split(" ", 2)
case key
when "author"
@name = value
when "author-mail"
@mail = value
author = "\"#{@name}\" #{@mail}"
@commits[author] ||= 0
@commits[author] += 1
end
end
end
end
end
end@commits.each_key do |a| puts a end
-- Felipe Contreras