From 034e4bc7cd5ca3271e59ebdba1b25beb37b4b73c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 28 May 2013 07:39:01 -0400 Subject: [PATCH] Enabled SparkleShare client menu using 1.1.0 invite handler redesign --- src/main/java/com/gitblit/models/PushLogEntry.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 115 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/models/PushLogEntry.java b/src/main/java/com/gitblit/models/PushLogEntry.java index f625c2a..d8f0b09 100644 --- a/src/main/java/com/gitblit/models/PushLogEntry.java +++ b/src/main/java/com/gitblit/models/PushLogEntry.java @@ -28,8 +28,11 @@ import java.util.Set; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.ReceiveCommand; + +import com.gitblit.utils.StringUtils; /** * Model class to represent a push into a repository. @@ -49,6 +52,8 @@ private final Set<RepositoryCommit> commits; private final Map<String, ReceiveCommand.Type> refUpdates; + + private final Map<String, String> refIdChanges; /** * Constructor for specified duration of push from start date. @@ -66,6 +71,7 @@ this.user = user; this.commits = new LinkedHashSet<RepositoryCommit>(); this.refUpdates = new HashMap<String, ReceiveCommand.Type>(); + this.refIdChanges = new HashMap<String, String>(); } /** @@ -78,6 +84,60 @@ if (!refUpdates.containsKey(ref)) { refUpdates.put(ref, type); } + } + + /** + * Tracks the change type for the specified ref. + * + * @param ref + * @param type + * @param oldId + * @param newId + */ + public void updateRef(String ref, ReceiveCommand.Type type, String oldId, String newId) { + if (!refUpdates.containsKey(ref)) { + refUpdates.put(ref, type); + refIdChanges.put(ref, oldId + "-" + newId); + } + } + + /** + * Returns the old id of a ref. + * + * @param ref + * @return the old id + */ + public String getOldId(String ref) { + String change = refIdChanges.get(ref); + if (StringUtils.isEmpty(change)) { + return null; + } + return change.split("-")[0]; + } + + /** + * Returns the new id of a ref + * + * @param ref + * @return the new id + */ + public String getNewId(String ref) { + String change = refIdChanges.get(ref); + if (StringUtils.isEmpty(change)) { + return null; + } + return change.split("-")[1]; + } + + /** + * Returns the change type of the ref change. + * + * @param ref + * @return the change type for the ref + */ + public ReceiveCommand.Type getChangeType(String ref) { + ReceiveCommand.Type type = refUpdates.get(ref); + return type; } /** @@ -98,6 +158,16 @@ } /** + * 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); + } + + /** * Returns true if this push contains a non-fastforward ref update. * * @return true if this is a non-fastforward push @@ -109,6 +179,43 @@ } } return false; + } + + /** + * Returns true if this ref has been rewound. + * + * @param ref + * @return true if this is a non-fastforward ref update + */ + public boolean isNonFastForward(String ref) { + ReceiveCommand.Type type = refUpdates.get(ref); + if (type == null) { + return false; + } + return ReceiveCommand.Type.UPDATE_NONFASTFORWARD.equals(type); + } + + /** + * Returns true if this ref has been deleted. + * + * @param ref + * @return true if this is a delete ref update + */ + public boolean isDelete(String ref) { + ReceiveCommand.Type type = refUpdates.get(ref); + if (type == null) { + return false; + } + 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()); } /** @@ -183,6 +290,14 @@ Collections.sort(list); return list; } + + public PersonIdent getCommitterIdent() { + return new PersonIdent(user.getDisplayName(), user.emailAddress == null ? user.username : user.emailAddress); + } + + public PersonIdent getAuthorIdent() { + return getCommitterIdent(); + } @Override public int compareTo(PushLogEntry o) { -- Gitblit v1.9.1