From: Lars Kurth Date: Tue, 14 Jul 2015 20:24:53 +0000 (-0400) Subject: Added functionality to create vendor breakdowns for reviews and ACKs X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f99b26590a1f681daa4f954d218600ccf90b4cc4;p=people%2Flarsk%2Fxenproject-org-gitdm.git Added functionality to create vendor breakdowns for reviews and ACKs --- diff --git a/database.py b/database.py index 0bede16..73d7c2d 100644 --- a/database.py +++ b/database.py @@ -145,6 +145,7 @@ class Employer: self.name = name self.added = self.removed = self.count = self.changed = 0 self.sobs = 0 + self.reviews = 0 self.hackers = [ ] def AddCSet (self, patch): @@ -158,6 +159,9 @@ class Employer: def AddSOB (self): self.sobs += 1 + def AddReview (self): + self.reviews += 1 + Employers = { } def GetEmployer (name): diff --git a/gitdm b/gitdm index 836b7ec..d43ecd7 100755 --- a/gitdm +++ b/gitdm @@ -169,6 +169,7 @@ class patch: self.author = LookupStoreHacker('Unknown hacker', 'unknown@hacker.net') self.email = 'unknown@hacker.net' self.sobs = [ ] + self.revs = [ ] self.reviews = [ ] self.acks = [ ] self.testers = [ ] @@ -180,6 +181,7 @@ class patch: def addacker (self, reviewer): self.acks.append (reviewer) + self.reviews.append (reviewer) def addtester (self, tester): self.testers.append (tester) @@ -259,13 +261,19 @@ def grabpatch(logpatch): m = patterns['reviewed-by'].match (Line) if m: email = database.RemapEmail (m.group (2)) - p.addreviewer (LookupStoreHacker(m.group (1), email)) + reviewer = LookupStoreHacker(m.group (1), email) + p.addreviewer (reviewer) + if reviewer != p.author: + p.revs.append ((email, LookupStoreHacker(m.group (1), m.group (2)))) continue # Acked-by: m = patterns['acked-by'].match (Line) if m: email = database.RemapEmail (m.group (2)) - p.addacker (LookupStoreHacker(m.group (1), email)) + acker = LookupStoreHacker(m.group (1), email) + p.addacker (acker) + if acker != p.author: + p.revs.append ((email, LookupStoreHacker(m.group (1), m.group (2)))) continue # Tested-by: m = patterns['tested-by'].match (Line) @@ -458,6 +466,9 @@ for logpatch in patches: for sobemail, sobber in p.sobs: empl = sobber.emailemployer (sobemail, p.date) empl.AddSOB() + for revmail, reviewer in p.revs: + empl = reviewer.emailemployer (revmail, p.date) + empl.AddReview() if not p.merge: p.author.addpatch (p) @@ -466,10 +477,7 @@ for logpatch in patches: for hacker in p.reviews: hacker.addreview (p) for hacker in p.acks: - # An ACK also counts as a review - # (but there is no easy way to not double count, if there are both) hacker.addacked (p) - hacker.addreview (p) for hacker in p.testers: hacker.addtested (p) for hacker in p.reports: diff --git a/reports.py b/reports.py index b50af2b..ba4380f 100644 --- a/reports.py +++ b/reports.py @@ -363,6 +363,25 @@ def ReportByESOBs (elist): if count >= ListCount: break EndReport () + +def CompareEReviews (e1, e2): + return e2.reviews - e1.reviews + +def ReportByEReviews (elist): + elist.sort (CompareEReviews) + totalreviews = 0 + for e in elist: + totalreviews += e.reviews + count = 0 + BeginReport ('Employers with the most Reviews and ACKs (total %d)' % totalreviews) + for e in elist: + if e.reviews > 0: + ReportLine (e.name, e.reviews, (e.reviews*100.0)/totalreviews) + count += 1 + if count >= ListCount: + break + EndReport () + def CompareHackers (e1, e2): return len (e2.hackers) - len (e1.hackers) @@ -400,6 +419,7 @@ def EmplReports (elist, totalchanged, cscount): ReportByPCEmpl (elist, cscount) ReportByELChanged (elist, totalchanged) ReportByESOBs (elist) + ReportByEReviews (elist) ReportByEHackers (elist) #