From cedf138f3c9afeae7bcbda5dbb0511ebec297d10 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 10 Jun 2013 18:45:32 -0400 Subject: [PATCH] Globl and per-repository setting to exclude authors form metrics (issue-251) --- src/main/java/com/gitblit/models/Activity.java | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/models/Activity.java b/src/main/java/com/gitblit/models/Activity.java index 59405c7..547c348 100644 --- a/src/main/java/com/gitblit/models/Activity.java +++ b/src/main/java/com/gitblit/models/Activity.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -24,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeSet; import org.eclipse.jgit.revwalk.RevCommit; @@ -43,12 +45,14 @@ public final Date startDate; public final Date endDate; - + private final Set<RepositoryCommit> commits; private final Map<String, Metric> authorMetrics; private final Map<String, Metric> repositoryMetrics; + + private final Set<String> authorExclusions; /** * Constructor for one day of activity. @@ -73,6 +77,18 @@ commits = new LinkedHashSet<RepositoryCommit>(); authorMetrics = new HashMap<String, Metric>(); repositoryMetrics = new HashMap<String, Metric>(); + authorExclusions = new TreeSet<String>(); + } + + /** + * Exclude the specified authors from the metrics. + * + * @param authors + */ + public void excludeAuthors(Collection<String> authors) { + for (String author : authors) { + authorExclusions.add(author.toLowerCase()); + } } /** @@ -88,16 +104,20 @@ public RepositoryCommit addCommit(String repository, String branch, RevCommit commit) { RepositoryCommit commitModel = new RepositoryCommit(repository, branch, commit); if (commits.add(commitModel)) { + String author = StringUtils.removeNewlines(commit.getAuthorIdent().getName()); + String authorName = author.toLowerCase(); + String authorEmail = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase(); if (!repositoryMetrics.containsKey(repository)) { repositoryMetrics.put(repository, new Metric(repository)); } repositoryMetrics.get(repository).count++; - String author = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase(); - if (!authorMetrics.containsKey(author)) { - authorMetrics.put(author, new Metric(author)); + if (!authorExclusions.contains(authorName) && !authorExclusions.contains(authorEmail)) { + if (!authorMetrics.containsKey(author)) { + authorMetrics.put(author, new Metric(author)); + } + authorMetrics.get(author).count++; } - authorMetrics.get(author).count++; return commitModel; } return null; -- Gitblit v1.9.1