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/RpcServlet.java |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/RpcServlet.java b/src/com/gitblit/RpcServlet.java
index 53628a0..b068a39 100644
--- a/src/com/gitblit/RpcServlet.java
+++ b/src/com/gitblit/RpcServlet.java
@@ -27,11 +27,15 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.eclipse.jgit.lib.Repository;
+
 import com.gitblit.Constants.RpcRequest;
+import com.gitblit.models.RefModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.ServerSettings;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.HttpUtils;
+import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.RpcUtils;
 
 /**
@@ -86,6 +90,29 @@
 				repositories.put(url, model);
 			}
 			result = repositories;
+		} else if (RpcRequest.LIST_BRANCHES.equals(reqType)) {
+			// list all branches in all repositories accessible to user
+			Map<String, List<String>> allBranches = new HashMap<String, List<String>>();
+			List<RepositoryModel> models = GitBlit.self().getRepositoryModels(user);
+			for (RepositoryModel model : models) {
+				if (!model.hasCommits) {
+					// skip empty repository
+					continue;
+				}
+				// get branches
+				Repository repository = GitBlit.self().getRepository(model.name);
+				List<RefModel> refs = JGitUtils.getLocalBranches(repository, false, -1);
+				refs.addAll(JGitUtils.getRemoteBranches(repository, false, -1));
+				if (refs.size() > 0) {
+					List<String> branches = new ArrayList<String>();
+					for (RefModel ref : refs) {
+						branches.add(ref.getName());
+					}
+					allBranches.put(model.name, branches);
+				}
+				repository.close();
+			}
+			result = allBranches;
 		} else if (RpcRequest.LIST_USERS.equals(reqType)) {
 			// list users
 			List<String> names = GitBlit.self().getAllUsernames();

--
Gitblit v1.9.1