From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 30 Apr 2016 04:19:14 -0400
Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates

---
 src/main/java/com/gitblit/models/RefLogEntry.java |   83 +++++++++++++++++++++--------------------
 1 files changed, 43 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/gitblit/models/RefLogEntry.java b/src/main/java/com/gitblit/models/RefLogEntry.java
index 79e8a2c..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
@@ -164,7 +164,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
@@ -181,17 +181,17 @@
 	/**
 	 * 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() {
@@ -202,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
 	 */
@@ -219,7 +219,7 @@
 
 	/**
 	 * Returns true if this ref has been deleted.
-	 * 
+	 *
 	 * @param ref
 	 * @return true if this is a delete ref update
 	 */
@@ -230,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() {
@@ -260,7 +260,7 @@
 
 	/**
 	 * Gets the changed refs in the push.
-	 * 
+	 *
 	 * @param baseRef
 	 * @return the changed refs
 	 */
@@ -275,7 +275,7 @@
 		Collections.sort(list);
 		return list;
 	}
-	
+
 	public int getAuthorCount() {
 		if (authorCount == -1) {
 			Set<String> authors = new HashSet<String>();
@@ -287,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() {
@@ -307,10 +307,10 @@
 		Collections.sort(list);
 		return list;
 	}
-	
+
 	/**
 	 * Returns all commits that belong to a particular ref
-	 * 
+	 *
 	 * @param ref
 	 * @return a list of commits
 	 */
@@ -324,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();
 	}
 
@@ -338,7 +341,7 @@
 		// reverse chronological order
 		return o.date.compareTo(date);
 	}
-	
+
 	@Override
 	public String toString() {
 		StringBuilder sb = new StringBuilder();

--
Gitblit v1.9.1