From 23600183b80713d7c87300316de0b06596d673e3 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 10 Jul 2012 23:54:07 -0400
Subject: [PATCH] Adjust repository search to handle foo.git and foo/bar.git (issue 104)

---
 docs/04_releases.mkd                       |    1 +
 tests/com/gitblit/tests/JGitUtilsTest.java |    2 +-
 src/com/gitblit/utils/JGitUtils.java       |   11 ++++++++---
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd
index 048db6f..3c22dbe 100644
--- a/docs/04_releases.mkd
+++ b/docs/04_releases.mkd
@@ -6,6 +6,7 @@
 
 #### fixes
 
+- Adjust repository search to handle foo.git and foo/bar.git (issue 104)
 - Fixed bug where a repository set as authenticated push did not have anonymous clone access (issue 96)
 - Fixed bug in Basic authentication if passwords had a colon (Github/peterloron)
 - Fixed bug where the Gitblit Manager could not update a setting that was not referenced in reference.properties (issue 85)
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index 72a8ab3..ab5b655 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -309,9 +309,14 @@
 					if (onlyBare && gitDir.getName().equals(".git")) {
 						continue;
 					}
-					// determine repository name relative to base path
-					String repository = FileUtils.getRelativePath(baseFile, file);
-					list.add(repository);
+					if (gitDir.equals(file) || gitDir.getParentFile().equals(file)) {
+						// determine repository name relative to base path
+						String repository = FileUtils.getRelativePath(baseFile, file);
+						list.add(repository);
+					} else if (searchSubfolders && file.canRead()) {
+						// look for repositories in subfolders
+						list.addAll(getRepositoryList(basePath, file, onlyBare, searchSubfolders));
+					}
 				} else if (searchSubfolders && file.canRead()) {
 					// look for repositories in subfolders
 					list.addAll(getRepositoryList(basePath, file, onlyBare, searchSubfolders));
diff --git a/tests/com/gitblit/tests/JGitUtilsTest.java b/tests/com/gitblit/tests/JGitUtilsTest.java
index dc4d3c5..316d136 100644
--- a/tests/com/gitblit/tests/JGitUtilsTest.java
+++ b/tests/com/gitblit/tests/JGitUtilsTest.java
@@ -71,7 +71,7 @@
 		assertEquals(0, list.size());
 		list.addAll(JGitUtils.getRepositoryList(new File("DoesNotExist"), true, true));
 		assertEquals(0, list.size());
-		list.addAll(JGitUtils.getRepositoryList(GitBlitSuite.REPOSITORIES, true, true));
+		list.addAll(JGitUtils.getRepositoryList(GitBlitSuite.REPOSITORIES, false, true));
 		assertTrue("No repositories found in " + GitBlitSuite.REPOSITORIES, list.size() > 0);
 	}
 

--
Gitblit v1.9.1