From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001
From: Gerard Smyth <gerard.smyth@gmail.com>
Date: Thu, 08 May 2014 13:09:30 -0400
Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored.

---
 src/main/java/com/gitblit/models/RepositoryModel.java |   76 +++++++++++++++++++++++---------------
 1 files changed, 46 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/gitblit/models/RepositoryModel.java b/src/main/java/com/gitblit/models/RepositoryModel.java
index 6e1e226..a81c622 100644
--- a/src/main/java/com/gitblit/models/RepositoryModel.java
+++ b/src/main/java/com/gitblit/models/RepositoryModel.java
@@ -26,16 +26,18 @@
 
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.Constants.CommitMessageRenderer;
 import com.gitblit.Constants.FederationStrategy;
 import com.gitblit.utils.ArrayUtils;
+import com.gitblit.utils.ModelUtils;
 import com.gitblit.utils.StringUtils;
 
 /**
  * RepositoryModel is a serializable model class that represents a Gitblit
  * repository including its configuration settings and access restriction.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 public class RepositoryModel implements Serializable, Comparable<RepositoryModel> {
 
@@ -46,17 +48,15 @@
 	public String description;
 	public List<String> owners;
 	public Date lastChange;
+	public String lastChangeAuthor;
 	public boolean hasCommits;
 	public boolean showRemoteBranches;
-	public boolean useTickets;
-	public boolean useDocs;
 	public boolean useIncrementalPushTags;
 	public String incrementalPushTagPrefix;
 	public AccessRestrictionType accessRestriction;
 	public AuthorizationControl authorizationControl;
 	public boolean allowAuthenticated;
 	public boolean isFrozen;
-	public boolean showReadme;
 	public FederationStrategy federationStrategy;
 	public List<String> federationSets;
 	public boolean isFederated;
@@ -64,6 +64,7 @@
 	public boolean skipSummaryMetrics;
 	public String frequency;
 	public boolean isBare;
+	public boolean isMirror;
 	public String origin;
 	public String HEAD;
 	public List<String> availableRefs;
@@ -82,11 +83,17 @@
 	public String gcThreshold;
 	public int gcPeriod;
 	public int maxActivityCommits;
-	
+	public List<String> metricAuthorExclusions;
+	public CommitMessageRenderer commitMessageRenderer;
+	public boolean acceptNewPatchsets;
+	public boolean acceptNewTickets;
+	public boolean requireApproval;
+	public String mergeTo;
+
 	public transient boolean isCollectingGarbage;
 	public Date lastGC;
 	public String sparkleshareId;
-	
+
 	public RepositoryModel() {
 		this("", "", "", new Date(0));
 	}
@@ -98,14 +105,16 @@
 		this.accessRestriction = AccessRestrictionType.NONE;
 		this.authorizationControl = AuthorizationControl.NAMED;
 		this.federationSets = new ArrayList<String>();
-		this.federationStrategy = FederationStrategy.FEDERATE_THIS;	
+		this.federationStrategy = FederationStrategy.FEDERATE_THIS;
 		this.projectPath = StringUtils.getFirstPathElement(name);
 		this.owners = new ArrayList<String>();
 		this.isBare = true;
-		
+		this.acceptNewTickets = true;
+		this.acceptNewPatchsets = true;
+
 		addOwner(owner);
 	}
-	
+
 	public List<String> getLocalBranches() {
 		if (ArrayUtils.isEmpty(availableRefs)) {
 			return new ArrayList<String>();
@@ -118,30 +127,34 @@
 		}
 		return localBranches;
 	}
-	
+
 	public void addFork(String repository) {
 		if (forks == null) {
 			forks = new TreeSet<String>();
 		}
 		forks.add(repository);
 	}
-	
+
 	public void removeFork(String repository) {
 		if (forks == null) {
 			return;
 		}
 		forks.remove(repository);
 	}
-	
+
 	public void resetDisplayName() {
 		displayName = null;
 	}
-	
+
+	public String getRID() {
+		return StringUtils.getSHA1(name);
+	}
+
 	@Override
 	public int hashCode() {
 		return name.hashCode();
 	}
-	
+
 	@Override
 	public boolean equals(Object o) {
 		if (o instanceof RepositoryModel) {
@@ -162,34 +175,38 @@
 	public int compareTo(RepositoryModel o) {
 		return StringUtils.compareRepositoryNames(name, o.name);
 	}
-	
+
 	public boolean isFork() {
 		return !StringUtils.isEmpty(originRepository);
 	}
-	
+
 	public boolean isOwner(String username) {
 		if (StringUtils.isEmpty(username) || ArrayUtils.isEmpty(owners)) {
-			return false;
+			return isUsersPersonalRepository(username);
 		}
-		return owners.contains(username.toLowerCase());
+		return owners.contains(username.toLowerCase()) || isUsersPersonalRepository(username);
 	}
-	
+
 	public boolean isPersonalRepository() {
-		return !StringUtils.isEmpty(projectPath) && projectPath.charAt(0) == '~';
+		return !StringUtils.isEmpty(projectPath) && ModelUtils.isPersonalRepository(projectPath);
 	}
-	
+
 	public boolean isUsersPersonalRepository(String username) {
-		return !StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username);
+		return !StringUtils.isEmpty(projectPath) && ModelUtils.isUsersPersonalRepository(username, projectPath);
 	}
-	
+
 	public boolean allowAnonymousView() {
 		return !accessRestriction.atLeast(AccessRestrictionType.VIEW);
 	}
-	
+
+	public boolean isShowActivity() {
+		return maxActivityCommits > -1;
+	}
+
 	public boolean isSparkleshared() {
 		return !StringUtils.isEmpty(sparkleshareId);
 	}
-	
+
 	public RepositoryModel cloneAs(String cloneName) {
 		RepositoryModel clone = new RepositoryModel();
 		clone.originRepository = name;
@@ -200,14 +217,13 @@
 		clone.accessRestriction = AccessRestrictionType.PUSH;
 		clone.authorizationControl = AuthorizationControl.NAMED;
 		clone.federationStrategy = federationStrategy;
-		clone.showReadme = showReadme;
 		clone.showRemoteBranches = false;
 		clone.allowForks = false;
-		clone.useDocs = useDocs;
-		clone.useTickets = useTickets;
+		clone.acceptNewPatchsets = false;
+		clone.acceptNewTickets = false;
 		clone.skipSizeCalculation = skipSizeCalculation;
 		clone.skipSummaryMetrics = skipSummaryMetrics;
-		clone.sparkleshareId = sparkleshareId; 
+		clone.sparkleshareId = sparkleshareId;
 		return clone;
 	}
 

--
Gitblit v1.9.1