From 4b441d259cbb76c1136e3e8899ebc4e35ab7de2e Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 02 Jul 2014 17:45:43 -0400
Subject: [PATCH] Merged #124 "Update to Freemarker 2.3.20"
---
src/main/java/com/gitblit/models/RefLogEntry.java | 100 ++++++++++++++++++++++++++++++--------------------
1 files changed, 60 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/gitblit/models/RefLogEntry.java b/src/main/java/com/gitblit/models/RefLogEntry.java
index 54d1777..07dc6f3 100644
--- a/src/main/java/com/gitblit/models/RefLogEntry.java
+++ b/src/main/java/com/gitblit/models/RefLogEntry.java
@@ -36,7 +36,7 @@
/**
* Model class to represent a push into a repository.
- *
+ *
* @author James Moger
*/
public class RefLogEntry implements Serializable, Comparable<RefLogEntry> {
@@ -44,22 +44,22 @@
private static final long serialVersionUID = 1L;
public final String repository;
-
+
public final Date date;
-
+
public final UserModel user;
private final Set<RepositoryCommit> commits;
-
+
protected final Map<String, ReceiveCommand.Type> refUpdates;
-
+
protected final Map<String, String> refIdChanges;
-
+
private int authorCount;
/**
* Constructor for specified duration of push from start date.
- *
+ *
* @param repository
* the repository that received the push
* @param date
@@ -76,10 +76,10 @@
this.refIdChanges = new HashMap<String, String>();
this.authorCount = -1;
}
-
+
/**
* Tracks the change type for the specified ref.
- *
+ *
* @param ref
* @param type
*/
@@ -88,10 +88,10 @@
refUpdates.put(ref, type);
}
}
-
+
/**
* Tracks the change type for the specified ref.
- *
+ *
* @param ref
* @param type
* @param oldId
@@ -103,10 +103,10 @@
refIdChanges.put(ref, oldId + "-" + newId);
}
}
-
+
/**
* Returns the old id of a ref.
- *
+ *
* @param ref
* @return the old id
*/
@@ -120,7 +120,7 @@
/**
* Returns the new id of a ref
- *
+ *
* @param ref
* @return the new id
*/
@@ -131,10 +131,10 @@
}
return change.split("-")[1];
}
-
+
/**
* Returns the change type of the ref change.
- *
+ *
* @param ref
* @return the change type for the ref
*/
@@ -146,7 +146,7 @@
/**
* Adds a commit to the push entry object as long as the commit is not a
* duplicate.
- *
+ *
* @param branch
* @param commit
* @return a RepositoryCommit, if one was added. Null if this is duplicate
@@ -160,21 +160,38 @@
}
return null;
}
-
+
+ /**
+ * Adds a commit to the push entry object as long as the commit is not a
+ * duplicate.
+ *
+ * @param branch
+ * @param commit
+ * @return a RepositoryCommit, if one was added. Null if this is duplicate
+ * commit
+ */
+ public RepositoryCommit addCommit(RepositoryCommit commit) {
+ if (commits.add(commit)) {
+ authorCount = -1;
+ return commit;
+ }
+ return null;
+ }
+
/**
* Adds a a list of repository commits. This is used to construct discrete
* ref push log entries
- *
+ *
* @param commits
*/
public void addCommits(List<RepositoryCommit> list) {
commits.addAll(list);
authorCount = -1;
}
-
+
/**
* Returns true if this push contains a non-fastforward ref update.
- *
+ *
* @return true if this is a non-fastforward push
*/
public boolean isNonFastForward() {
@@ -185,10 +202,10 @@
}
return false;
}
-
+
/**
* Returns true if this ref has been rewound.
- *
+ *
* @param ref
* @return true if this is a non-fastforward ref update
*/
@@ -202,7 +219,7 @@
/**
* Returns true if this ref has been deleted.
- *
+ *
* @param ref
* @return true if this is a delete ref update
*/
@@ -213,28 +230,28 @@
}
return ReceiveCommand.Type.DELETE.equals(type);
}
-
+
/**
* Returns the list of refs changed by the push.
- *
+ *
* @return a list of refs
*/
public List<String> getChangedRefs() {
return new ArrayList<String>(refUpdates.keySet());
}
-
+
/**
* Returns the list of branches changed by the push.
- *
+ *
* @return a list of branches
*/
public List<String> getChangedBranches() {
return getChangedRefs(Constants.R_HEADS);
}
-
+
/**
* Returns the list of tags changed by the push.
- *
+ *
* @return a list of tags
*/
public List<String> getChangedTags() {
@@ -243,7 +260,7 @@
/**
* Gets the changed refs in the push.
- *
+ *
* @param baseRef
* @return the changed refs
*/
@@ -258,7 +275,7 @@
Collections.sort(list);
return list;
}
-
+
public int getAuthorCount() {
if (authorCount == -1) {
Set<String> authors = new HashSet<String>();
@@ -270,19 +287,19 @@
}
return authorCount;
}
-
+
/**
* The total number of commits in the push.
- *
+ *
* @return the number of commits in the push
*/
public int getCommitCount() {
return commits.size();
}
-
+
/**
* Returns all commits in the push.
- *
+ *
* @return a list of commits
*/
public List<RepositoryCommit> getCommits() {
@@ -290,10 +307,10 @@
Collections.sort(list);
return list;
}
-
+
/**
* Returns all commits that belong to a particular ref
- *
+ *
* @param ref
* @return a list of commits
*/
@@ -307,12 +324,15 @@
Collections.sort(list);
return list;
}
-
+
public PersonIdent getCommitterIdent() {
return new PersonIdent(user.getDisplayName(), user.emailAddress == null ? user.username : user.emailAddress);
}
public PersonIdent getAuthorIdent() {
+ if (getAuthorCount() == 1) {
+ return getCommits().get(0).getAuthorIdent();
+ }
return getCommitterIdent();
}
@@ -321,7 +341,7 @@
// reverse chronological order
return o.date.compareTo(date);
}
-
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
--
Gitblit v1.9.1