From 40ca5c51d1006cd1badf5393f20921b2047f4701 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 16 Mar 2012 17:01:19 -0400
Subject: [PATCH] Repository-branch Lucene indexing is now opt-in

---
 tests/com/gitblit/tests/LuceneExecutorTest.java |   58 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 35 insertions(+), 23 deletions(-)

diff --git a/tests/com/gitblit/tests/LuceneExecutorTest.java b/tests/com/gitblit/tests/LuceneExecutorTest.java
index ddc9bf8..7a171db 100644
--- a/tests/com/gitblit/tests/LuceneExecutorTest.java
+++ b/tests/com/gitblit/tests/LuceneExecutorTest.java
@@ -24,7 +24,10 @@
 import org.junit.Test;
 
 import com.gitblit.LuceneExecutor;
+import com.gitblit.models.RefModel;
+import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.SearchResult;
+import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
 
 /**
@@ -39,9 +42,18 @@
 		return new LuceneExecutor(null, GitBlitSuite.REPOSITORIES);
 	}
 	
-	private String getName(Repository repository) {
-		return StringUtils.getRelativePath(GitBlitSuite.REPOSITORIES.getAbsolutePath(),
+	private RepositoryModel newRepositoryModel(Repository repository) {		
+		RepositoryModel model = new RepositoryModel();
+		model.name = StringUtils.getRelativePath(GitBlitSuite.REPOSITORIES.getAbsolutePath(),
 				repository.getDirectory().getAbsolutePath());
+		model.hasCommits = JGitUtils.hasCommits(repository);
+		
+		// index all local branches
+		model.indexedBranches = new ArrayList<String>();
+		for (RefModel ref : JGitUtils.getLocalBranches(repository, true, -1)) {
+			model.indexedBranches.add(ref.getName());
+		}
+		return model;
 	}
 	
 	@Test
@@ -50,25 +62,25 @@
 		
 		// reindex helloworld
 		Repository repository = GitBlitSuite.getHelloworldRepository();
-		String name = getName(repository);
-		lucene.reindex(name, repository);
+		RepositoryModel model = newRepositoryModel(repository);
+		lucene.reindex(model, repository);
 		repository.close();
 		
-		SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, name).get(0);		
+		SearchResult result = lucene.search("type:blob AND path:bit.bit", 1, model.name).get(0);		
 		assertEquals("Mike Donaghy", result.author);
-		result = lucene.search("type:blob AND path:clipper.prg", 1, name).get(0);		
+		result = lucene.search("type:blob AND path:clipper.prg", 1, model.name).get(0);		
 		assertEquals("tinogomes", result.author);		
 
 		// reindex theoretical physics
 		repository = GitBlitSuite.getTheoreticalPhysicsRepository();
-		name = getName(repository);
-		lucene.reindex(name, repository);
+		model = newRepositoryModel(repository);
+		lucene.reindex(model, repository);
 		repository.close();
 		
 		// reindex JGit
 		repository = GitBlitSuite.getJGitRepository();
-		name = getName(repository);
-		lucene.reindex(name, repository);
+		model = newRepositoryModel(repository);
+		lucene.reindex(model, repository);
 		repository.close();
 		
 		lucene.close();
@@ -80,51 +92,51 @@
 		
 		// 2 occurrences on the master branch
 		Repository repository = GitBlitSuite.getHelloworldRepository();				
-		String name = getName(repository);
+		RepositoryModel model = newRepositoryModel(repository);
 		repository.close();
 		
-		List<SearchResult> results = lucene.search("ada", 10, name);
+		List<SearchResult> results = lucene.search("ada", 10, model.name);
 		assertEquals(2, results.size());
 		for (SearchResult res : results) {
 			assertEquals("refs/heads/master", res.branch);
 		}
 
 		// author test
-		results = lucene.search("author: tinogomes AND type:commit", 10, name);
+		results = lucene.search("author: tinogomes AND type:commit", 10, model.name);
 		assertEquals(2, results.size());
 		
 		// blob test
-		results = lucene.search("type: blob AND \"import std.stdio\"", 10, name);
+		results = lucene.search("type: blob AND \"import std.stdio\"", 10, model.name);
 		assertEquals(1, results.size());
 		assertEquals("d.D", results.get(0).path);
 		
 		// 1 occurrence on the gh-pages branch
 		repository = GitBlitSuite.getTheoreticalPhysicsRepository();
-		name = getName(repository);
+		model = newRepositoryModel(repository);
 		repository.close();
 		
-		results = lucene.search("\"add the .nojekyll file\"", 10, name);
+		results = lucene.search("\"add the .nojekyll file\"", 10, model.name);
 		assertEquals(1, results.size());
 		assertEquals("Ondrej Certik", results.get(0).author);
 		assertEquals("2648c0c98f2101180715b4d432fc58d0e21a51d7", results.get(0).commitId);
 		assertEquals("refs/heads/gh-pages", results.get(0).branch);
 		
-		results = lucene.search("type:blob AND \"src/intro.rst\"", 10, name);
+		results = lucene.search("type:blob AND \"src/intro.rst\"", 10, model.name);
 		assertEquals(4, results.size());
 		
 		// hash id tests
-		results = lucene.search("commit:57c4f26f157ece24b02f4f10f5f68db1d2ce7ff5", 10, name);
+		results = lucene.search("commit:57c4f26f157ece24b02f4f10f5f68db1d2ce7ff5", 10, model.name);
 		assertEquals(1, results.size());
 
-		results = lucene.search("commit:57c4f26f157*", 10, name);
+		results = lucene.search("commit:57c4f26f157*", 10, model.name);
 		assertEquals(1, results.size());		
 		
 		// annotated tag test
 		repository = GitBlitSuite.getJGitRepository();
-		name = getName(repository);
+		model = newRepositoryModel(repository);
 		repository.close();
 		
-		results = lucene.search("I663208919f297836a9c16bf458e4a43ffaca4c12", 10, name);
+		results = lucene.search("I663208919f297836a9c16bf458e4a43ffaca4c12", 10, model.name);
 		assertEquals(1, results.size());
 		assertEquals("[v1.3.0.201202151440-r]", results.get(0).tags.toString());		
 		
@@ -136,11 +148,11 @@
 		LuceneExecutor lucene = newLuceneExecutor();
 		List<String> list = new ArrayList<String>();
 		Repository repository = GitBlitSuite.getHelloworldRepository();
-		list.add(getName(repository));
+		list.add(newRepositoryModel(repository).name);
 		repository.close();
 
 		repository = GitBlitSuite.getJGitRepository();
-		list.add(getName(repository));
+		list.add(newRepositoryModel(repository).name);
 		repository.close();
 
 		List<SearchResult> results = lucene.search("test", 10, list);

--
Gitblit v1.9.1