From 7847af6e63e7adef6ec8d99a1809e91472d2bc2d Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 05 Sep 2013 09:14:22 -0400 Subject: [PATCH] Restore blockpush and localclone hooks to binaries (issue-303) --- src/main/java/com/gitblit/models/Activity.java | 56 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gitblit/models/Activity.java b/src/main/java/com/gitblit/models/Activity.java index 59405c7..8af86d6 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()); + } } /** @@ -87,22 +103,40 @@ */ public RepositoryCommit addCommit(String repository, String branch, RevCommit commit) { RepositoryCommit commitModel = new RepositoryCommit(repository, branch, commit); - if (commits.add(commitModel)) { - if (!repositoryMetrics.containsKey(repository)) { - repositoryMetrics.put(repository, new Metric(repository)); - } - repositoryMetrics.get(repository).count++; + return addCommit(commitModel); + } - String author = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase(); - if (!authorMetrics.containsKey(author)) { - authorMetrics.put(author, new Metric(author)); + /** + * Adds a commit to the activity object as long as the commit is not a + * duplicate. + * + * @param repository + * @param branch + * @param commit + * @return a RepositoryCommit, if one was added. Null if this is duplicate + * commit + */ + public RepositoryCommit addCommit(RepositoryCommit commitModel) { + if (commits.add(commitModel)) { + String author = StringUtils.removeNewlines(commitModel.getAuthorIdent().getName()); + String authorName = author.toLowerCase(); + String authorEmail = StringUtils.removeNewlines(commitModel.getAuthorIdent().getEmailAddress()).toLowerCase(); + if (!repositoryMetrics.containsKey(commitModel.repository)) { + repositoryMetrics.put(commitModel.repository, new Metric(commitModel.repository)); } - authorMetrics.get(author).count++; + repositoryMetrics.get(commitModel.repository).count++; + + if (!authorExclusions.contains(authorName) && !authorExclusions.contains(authorEmail)) { + if (!authorMetrics.containsKey(author)) { + authorMetrics.put(author, new Metric(author)); + } + authorMetrics.get(author).count++; + } return commitModel; } return null; } - + public int getCommitCount() { return commits.size(); } -- Gitblit v1.9.1