git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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 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
Next: Junio C Hamano
Message 1 of 8 in “My custom cccmd”
  1. Felipe ContrerasOct 15, 2009
  2. Junio C HamanoOct 15, 2009
  3. Felipe ContrerasOct 15, 2009
  4. Felipe ContrerasOct 25, 2009
  5. Junio C HamanoOct 27, 2009
  6. Felipe ContrerasOct 30, 2009
  7. Junio C HamanoOct 30, 2009
  8. Felipe ContrerasNov 2, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.