From c75304637f5535e634e57d4ed933c0fdb594d890 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 28 Oct 2011 08:08:00 -0400
Subject: [PATCH] Added a list branches rpc

---
 src/com/gitblit/utils/JGitUtils.java |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index e61fea2..80147d4 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -37,8 +37,6 @@
 import org.eclipse.jgit.api.CloneCommand;
 import org.eclipse.jgit.api.FetchCommand;
 import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.PullCommand;
-import org.eclipse.jgit.api.PullResult;
 import org.eclipse.jgit.api.ResetCommand;
 import org.eclipse.jgit.api.ResetCommand.ResetType;
 import org.eclipse.jgit.diff.DiffEntry;
@@ -142,6 +140,7 @@
 	 * Encapsulates the result of cloning or pulling from a repository.
 	 */
 	public static class CloneResult {
+		public String name;
 		public FetchResult fetchResult;
 		public boolean createdRepository;
 	}
@@ -159,7 +158,7 @@
 	 */
 	public static CloneResult cloneRepository(File repositoriesFolder, String name, String fromUrl)
 			throws Exception {
-		return cloneRepository(repositoriesFolder, name, fromUrl, null);
+		return cloneRepository(repositoriesFolder, name, fromUrl, true, null);
 	}
 
 	/**
@@ -170,16 +169,27 @@
 	 * @param repositoriesFolder
 	 * @param name
 	 * @param fromUrl
+	 * @param bare
 	 * @param credentialsProvider
 	 * @return CloneResult
 	 * @throws Exception
 	 */
 	public static CloneResult cloneRepository(File repositoriesFolder, String name, String fromUrl,
-			CredentialsProvider credentialsProvider) throws Exception {
+			boolean bare, CredentialsProvider credentialsProvider) throws Exception {
 		CloneResult result = new CloneResult();
-		if (!name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
-			name += Constants.DOT_GIT_EXT;
+		if (bare) {
+			// bare repository, ensure .git suffix
+			if (!name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
+				name += Constants.DOT_GIT_EXT;
+			}
+		} else {
+			// normal repository, strip .git suffix
+			if (name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
+				name = name.substring(0, name.indexOf(Constants.DOT_GIT_EXT));
+			}
 		}
+		result.name = name;
+
 		File folder = new File(repositoriesFolder, name);
 		if (folder.exists()) {
 			File gitDir = FileKey.resolve(new File(repositoriesFolder, name), FS.DETECTED);
@@ -188,7 +198,7 @@
 			repository.close();
 		} else {
 			CloneCommand clone = new CloneCommand();
-			clone.setBare(true);
+			clone.setBare(bare);
 			clone.setCloneAllBranches(true);
 			clone.setURI(fromUrl);
 			clone.setDirectory(folder);
@@ -289,7 +299,7 @@
 		}
 		list.addAll(getRepositoryList(repositoriesFolder.getAbsolutePath(), repositoriesFolder,
 				exportAll, searchSubfolders));
-		Collections.sort(list);
+		StringUtils.sortRepositorynames(list);
 		return list;
 	}
 

--
Gitblit v1.9.1