Instead of showing the total involvement, show it per role: author, or signer. Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- contrib/related/git-related | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/contrib/related/git-related b/contrib/related/git-related index df13148..cd1ef59 100755 --- a/contrib/related/git-related +++ b/contrib/related/git-related @@ -31,10 +31,12 @@ class Person @name = name @email = email @commits = {} + @roles = Hash.new(0) end - def add_role(commit) + def add_role(commit, role) @commits[commit] = true + @roles[role] += 1 end def <=>(b) @@ -79,20 +81,20 @@ class Commit end def parse(data) - msg = nil + msg = author = nil data.each_line do |line| if not msg case line when /^author ([^<>]+) <(\S+)> (.+)$/ author = Persons.get($1, $2) - author.add_role(@id) + author.add_role(@id, :author) when /^$/ msg = true end else if line =~ /^(Signed-off|Reviewed|Acked)-by: ([^<>]+) <(\S+?)>$/ person = Persons.get($2, $3) - person.add_role(@id) + person.add_role(@id, :signer) if person != author end end end @@ -174,5 +176,11 @@ persons = Persons.new persons.sort.reverse.each do |person| percent = person.size.to_f * 100 / commits.size next if percent < $min_percent - puts '%s (involved: %u%%)' % [person, percent] + + roles = person.roles.map do |role, role_count| + role_percent = role_count.to_f * 100 / commits.size + '%s: %u%%' % [role, role_percent] + end + + puts '%s (%s)' % [person, roles.join(', ')] end -- 1.8.3.rc2.542.g24820ba -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html