From 99f359e07087d826fdb024e4d205c2cb645f1d2a Mon Sep 17 00:00:00 2001
From: saheba <mail@saheba.net>
Date: Mon, 25 Mar 2013 16:32:53 -0400
Subject: [PATCH] +feature: automatic tagging of each push with an incremental revision number per repository
---
src/com/gitblit/models/Activity.java | 116 +++++++++++++++++++---------------------------------------
1 files changed, 38 insertions(+), 78 deletions(-)
diff --git a/src/com/gitblit/models/Activity.java b/src/com/gitblit/models/Activity.java
index f24a5ab..59405c7 100644
--- a/src/com/gitblit/models/Activity.java
+++ b/src/com/gitblit/models/Activity.java
@@ -17,14 +17,17 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
-import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
+import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
/**
@@ -41,7 +44,7 @@
public final Date endDate;
- public final List<RepositoryCommit> commits;
+ private final Set<RepositoryCommit> commits;
private final Map<String, Metric> authorMetrics;
@@ -67,26 +70,47 @@
public Activity(Date date, long duration) {
startDate = date;
endDate = new Date(date.getTime() + duration);
- commits = new ArrayList<RepositoryCommit>();
+ commits = new LinkedHashSet<RepositoryCommit>();
authorMetrics = new HashMap<String, Metric>();
repositoryMetrics = new HashMap<String, Metric>();
}
+ /**
+ * 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(String repository, String branch, RevCommit commit) {
RepositoryCommit commitModel = new RepositoryCommit(repository, branch, commit);
- commits.add(commitModel);
+ if (commits.add(commitModel)) {
+ if (!repositoryMetrics.containsKey(repository)) {
+ repositoryMetrics.put(repository, new Metric(repository));
+ }
+ repositoryMetrics.get(repository).count++;
- if (!repositoryMetrics.containsKey(repository)) {
- repositoryMetrics.put(repository, new Metric(repository));
+ String author = StringUtils.removeNewlines(commit.getAuthorIdent().getEmailAddress()).toLowerCase();
+ if (!authorMetrics.containsKey(author)) {
+ authorMetrics.put(author, new Metric(author));
+ }
+ authorMetrics.get(author).count++;
+ return commitModel;
}
- repositoryMetrics.get(repository).count++;
-
- String author = commit.getAuthorIdent().getEmailAddress().toLowerCase();
- if (!authorMetrics.containsKey(author)) {
- authorMetrics.put(author, new Metric(author));
- }
- authorMetrics.get(author).count++;
- return commitModel;
+ return null;
+ }
+
+ public int getCommitCount() {
+ return commits.size();
+ }
+
+ public List<RepositoryCommit> getCommits() {
+ List<RepositoryCommit> list = new ArrayList<RepositoryCommit>(commits);
+ Collections.sort(list);
+ return list;
}
public Map<String, Metric> getAuthorMetrics() {
@@ -101,69 +125,5 @@
public int compareTo(Activity o) {
// reverse chronological order
return o.startDate.compareTo(startDate);
- }
-
- /**
- * Model class to represent a RevCommit, it's source repository, and the
- * branch. This class is used by the activity page.
- *
- * @author James Moger
- */
- public static class RepositoryCommit implements Serializable, Comparable<RepositoryCommit> {
-
- private static final long serialVersionUID = 1L;
-
- public final String repository;
-
- public final String branch;
-
- private final RevCommit commit;
-
- private List<RefModel> refs;
-
- public RepositoryCommit(String repository, String branch, RevCommit commit) {
- this.repository = repository;
- this.branch = branch;
- this.commit = commit;
- }
-
- public void setRefs(List<RefModel> refs) {
- this.refs = refs;
- }
-
- public List<RefModel> getRefs() {
- return refs;
- }
-
- public String getName() {
- return commit.getName();
- }
-
- public String getShortName() {
- return commit.getName().substring(0, 8);
- }
-
- public String getShortMessage() {
- return commit.getShortMessage();
- }
-
- public int getParentCount() {
- return commit.getParentCount();
- }
-
- public PersonIdent getAuthorIdent() {
- return commit.getAuthorIdent();
- }
-
- @Override
- public int compareTo(RepositoryCommit o) {
- // reverse-chronological order
- if (commit.getCommitTime() > o.commit.getCommitTime()) {
- return -1;
- } else if (commit.getCommitTime() < o.commit.getCommitTime()) {
- return 1;
- }
- return 0;
- }
}
}
--
Gitblit v1.9.1