My custom cccmd
From: Felipe Contreras <hidden>
Date: 2016-06-15 22:47:33
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 author
ARGV.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