From 88fb67f6cfdef7a3d44691aca623d3486fec3655 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 10 Aug 2012 17:37:36 -0400
Subject: [PATCH] Improve submodule checking in LuceneExecutor (issue-119)

---
 src/com/gitblit/models/PathModel.java |   11 +++++++++++
 src/com/gitblit/LuceneExecutor.java   |    3 +++
 2 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/LuceneExecutor.java b/src/com/gitblit/LuceneExecutor.java
index d1c27f4..9cae3d5 100644
--- a/src/com/gitblit/LuceneExecutor.java
+++ b/src/com/gitblit/LuceneExecutor.java
@@ -652,6 +652,9 @@
 					Resolution.MINUTE);
 			IndexWriter writer = getIndexWriter(repositoryName);
 			for (PathChangeModel path : changedPaths) {
+				if (path.isSubmodule()) {
+					continue;
+				}
 				// delete the indexed blob
 				deleteBlob(repositoryName, branch, path.name);
 
diff --git a/src/com/gitblit/models/PathModel.java b/src/com/gitblit/models/PathModel.java
index c78b300..9bb7eb7 100644
--- a/src/com/gitblit/models/PathModel.java
+++ b/src/com/gitblit/models/PathModel.java
@@ -46,6 +46,10 @@
 		this.commitId = commitId;
 	}
 
+	public boolean isSubmodule() {
+		return FileMode.GITLINK.equals(mode);
+	}
+	
 	public boolean isTree() {
 		return FileMode.TREE.equals(mode);
 	}
@@ -71,6 +75,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;

--
Gitblit v1.9.1