Merge pull request #1186 from mystygage/listBranchForRepository

New rpc endpoint for listing all branches from a given repository
diff --git a/src/main/java/com/gitblit/Constants.java b/src/main/java/com/gitblit/Constants.java
index ab503bd..cd379b3 100644
--- a/src/main/java/com/gitblit/Constants.java
+++ b/src/main/java/com/gitblit/Constants.java
@@ -410,7 +410,7 @@
 		// Order is important here.  anything after LIST_SETTINGS requires

 		// administrator privileges and web.allowRpcManagement.

 		CLEAR_REPOSITORY_CACHE, REINDEX_TICKETS, GET_PROTOCOL, LIST_REPOSITORIES, LIST_BRANCHES, GET_USER,

-		FORK_REPOSITORY, LIST_SETTINGS,

+		FORK_REPOSITORY, LIST_REPOSITORY_BRANCHES, LIST_SETTINGS,

 		CREATE_REPOSITORY, EDIT_REPOSITORY, DELETE_REPOSITORY,

 		LIST_USERS, CREATE_USER, EDIT_USER, DELETE_USER,

 		LIST_TEAMS, CREATE_TEAM, EDIT_TEAM, DELETE_TEAM,

diff --git a/src/main/java/com/gitblit/servlet/RpcServlet.java b/src/main/java/com/gitblit/servlet/RpcServlet.java
index 9809a25..025be44 100644
--- a/src/main/java/com/gitblit/servlet/RpcServlet.java
+++ b/src/main/java/com/gitblit/servlet/RpcServlet.java
@@ -328,6 +328,18 @@
 			Collection<RegistrantAccessPermission> permissions = deserialize(request, response,

 					RpcUtils.REGISTRANT_PERMISSIONS_TYPE);

 			result = gitblit.setTeamAccessPermissions(model, permissions);

+		} else if (RpcRequest.LIST_REPOSITORY_BRANCHES.equals(reqType)) {

+

+			// list all branches for the given repository		

+			Repository repository = gitblit.getRepository(objectName);

+			List<RefModel> refs = JGitUtils.getLocalBranches(repository, false, -1);

+

+			List<String> branches = new ArrayList<>();

+			for (RefModel ref : refs) {

+				branches.add(ref.getName());

+			}

+			repository.close();

+			result = branches;

 		} else if (RpcRequest.LIST_FEDERATION_REGISTRATIONS.equals(reqType)) {

 			// return the list of federation registrations

 			if (allowAdmin) {

diff --git a/src/site/rpc.mkd b/src/site/rpc.mkd
index 4b065bf..e04b0ad 100644
--- a/src/site/rpc.mkd
+++ b/src/site/rpc.mkd
@@ -62,6 +62,7 @@
 <tr><td>Gitblit v1.3.1</td><td>6</td></tr>

 <tr><td>Gitblit v1.4.0</td><td>7</td></tr>

 <tr><td>Gitblit v1.6.0</td><td>8</td></tr>

+<tr><td>Gitblit v1.9.0</td><td>9</td></tr>

 </tbody>

 </table>

 

@@ -104,6 +105,7 @@
 <tr><td><s>SET_REPOSITORY_TEAMS</s></td><td><s>repository name</s></td><td><em><s>admin</s></em></td><td><s>2</s></td><td><s>List&lt;String&gt;</s></td><td>-</td></tr>

 <tr><td>LIST_REPOSITORY_TEAM_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>-</td><td>List&lt;String&gt;</td></tr>

 <tr><td>SET_REPOSITORY_TEAM_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>List&lt;String&gt;</td><td>-</td></tr>

+<tr><td>LIST_REPOSITORY_BRANCHES</td><td>repository name</td><td><em>-</em></td><td>9</td><td>-</td><td>List&lt;String&gt;</td></tr>

 <tr><td>LIST_SETTINGS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>ServerSettings (management keys)</td></tr>

 <tr><td>CLEAR_REPOSITORY_CACHE</td><td>-</td><td><em>-</em></td><td>4</td><td>-</td><td>-</td></tr>

 <tr><td>REINDEX_TICKETS</td><td>repository name</td><td><em>-</em></td><td>7</td><td>-</td><td>-</td></tr>