From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 19 Oct 2012 22:47:33 -0400
Subject: [PATCH] Exclude submodules from zip downloads (issue 151)

---
 src/com/gitblit/models/RepositoryModel.java |   36 +++++++++++++++++++++++++++++++++---
 1 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java
index 44aba1d..502f886 100644
--- a/src/com/gitblit/models/RepositoryModel.java
+++ b/src/com/gitblit/models/RepositoryModel.java
@@ -75,6 +75,7 @@
 	public boolean allowForks;
 	public Set<String> forks;
 	public String originRepository;
+	public boolean verifyCommitter;
 	
 	public RepositoryModel() {
 		this("", "", "", new Date(0));
@@ -88,7 +89,8 @@
 		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);
 	}
 	
 	public List<String> getLocalBranches() {
@@ -121,6 +123,19 @@
 	public void resetDisplayName() {
 		displayName = null;
 	}
+	
+	@Override
+	public int hashCode() {
+		return name.hashCode();
+	}
+	
+	@Override
+	public boolean equals(Object o) {
+		if (o instanceof RepositoryModel) {
+			return name.equals(((RepositoryModel) o).name);
+		}
+		return false;
+	}
 
 	@Override
 	public String toString() {
@@ -135,6 +150,14 @@
 		return StringUtils.compareRepositoryNames(name, o.name);
 	}
 	
+	public boolean isFork() {
+		return !StringUtils.isEmpty(originRepository);
+	}
+	
+	public boolean isOwner(String username) {
+		return owner != null && username != null && owner.equalsIgnoreCase(username);
+	}
+	
 	public boolean isPersonalRepository() {
 		return !StringUtils.isEmpty(projectPath) && projectPath.charAt(0) == '~';
 	}
@@ -143,12 +166,19 @@
 		return !StringUtils.isEmpty(projectPath) && projectPath.equalsIgnoreCase("~" + username);
 	}
 	
+	public boolean allowAnonymousView() {
+		return !accessRestriction.atLeast(AccessRestrictionType.VIEW);
+	}
+	
 	public RepositoryModel cloneAs(String cloneName) {
 		RepositoryModel clone = new RepositoryModel();
+		clone.originRepository = name;
 		clone.name = cloneName;
+		clone.projectPath = StringUtils.getFirstPathElement(cloneName);
+		clone.isBare = true;
 		clone.description = description;
-		clone.accessRestriction = accessRestriction;
-		clone.authorizationControl = authorizationControl;
+		clone.accessRestriction = AccessRestrictionType.PUSH;
+		clone.authorizationControl = AuthorizationControl.NAMED;
 		clone.federationStrategy = federationStrategy;
 		clone.showReadme = showReadme;
 		clone.showRemoteBranches = false;

--
Gitblit v1.9.1