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/PathModel.java |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/models/PathModel.java b/src/com/gitblit/models/PathModel.java
index c78b300..8692359 100644
--- a/src/com/gitblit/models/PathModel.java
+++ b/src/com/gitblit/models/PathModel.java
@@ -35,17 +35,23 @@
 	public final String path;
 	public final long size;
 	public final int mode;
+	public final String objectId;
 	public final String commitId;
 	public boolean isParentPath;
 
-	public PathModel(String name, String path, long size, int mode, String commitId) {
+	public PathModel(String name, String path, long size, int mode, String objectId, String commitId) {
 		this.name = name;
 		this.path = path;
 		this.size = size;
 		this.mode = mode;
+		this.objectId = objectId;
 		this.commitId = commitId;
 	}
 
+	public boolean isSubmodule() {
+		return FileMode.GITLINK.equals(mode);
+	}
+	
 	public boolean isTree() {
 		return FileMode.TREE.equals(mode);
 	}
@@ -71,6 +77,13 @@
 		if (isTree && otherTree) {
 			return path.compareTo(o.path);
 		} else if (!isTree && !otherTree) {
+			if (isSubmodule() && o.isSubmodule()) {
+				return path.compareTo(o.path);
+			} else if (isSubmodule()) {
+				return -1;
+			} else if (o.isSubmodule()) {
+				return 1;
+			}
 			return path.compareTo(o.path);
 		} else if (isTree && !otherTree) {
 			return -1;
@@ -91,9 +104,9 @@
 
 		public final ChangeType changeType;
 
-		public PathChangeModel(String name, String path, long size, int mode, String commitId,
-				ChangeType type) {
-			super(name, path, size, mode, commitId);
+		public PathChangeModel(String name, String path, long size, int mode, String objectId,
+				String commitId, ChangeType type) {
+			super(name, path, size, mode, objectId, commitId);
 			this.changeType = type;
 		}
 

--
Gitblit v1.9.1