From e9de3f7fd55dd4d4535cd7b2fc2bee8094152e39 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 17 Mar 2012 12:09:01 -0400
Subject: [PATCH] Implemented RPC administration of indexed branches

---
 docs/02_rpc.mkd                                      |    1 +
 src/com/gitblit/wicket/pages/EditRepositoryPage.java |   11 ++---------
 src/com/gitblit/client/RepositoriesPanel.java        |    2 ++
 src/com/gitblit/models/RepositoryModel.java          |   14 ++++++++++++++
 src/com/gitblit/client/EditRepositoryDialog.java     |   18 +++++++++++++++++-
 src/com/gitblit/RpcServlet.java                      |    2 +-
 6 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/docs/02_rpc.mkd b/docs/02_rpc.mkd
index 84446f5..98a73e5 100644
--- a/docs/02_rpc.mkd
+++ b/docs/02_rpc.mkd
@@ -63,6 +63,7 @@
 <tr><th>Release</th><th>Protocol Version</th></tr>
 <tr><td>Gitblit v0.7.0</td><td>1 (inferred version)</td></tr>
 <tr><td>Gitblit v0.8.0</td><td>2</td></tr>
+<tr><td>Gitblit v0.9.0</td><td>3</td></tr>
 </tbody>
 </table>
 
diff --git a/src/com/gitblit/RpcServlet.java b/src/com/gitblit/RpcServlet.java
index 2d51388..31ee5ad 100644
--- a/src/com/gitblit/RpcServlet.java
+++ b/src/com/gitblit/RpcServlet.java
@@ -49,7 +49,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public static final int PROTOCOL_VERSION = 2;
+	public static final int PROTOCOL_VERSION = 3;
 
 	public RpcServlet() {
 		super();
diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java
index 4d3485d..5c746cc 100644
--- a/src/com/gitblit/client/EditRepositoryDialog.java
+++ b/src/com/gitblit/client/EditRepositoryDialog.java
@@ -105,6 +105,8 @@
 	private JPalette<String> setsPalette;
 
 	private JPalette<String> teamsPalette;
+	
+	private JPalette<String> indexedBranchesPalette;
 
 	private JPalette<String> preReceivePalette;
 
@@ -258,6 +260,12 @@
 				.add(newFieldPanel(Translation.get("gb.federationSets"),
 						setsPalette), BorderLayout.CENTER);
 
+		indexedBranchesPalette = new JPalette<String>();
+		JPanel indexedBranchesPanel = new JPanel(new BorderLayout(5, 5));
+		indexedBranchesPanel
+				.add(newFieldPanel(Translation.get("gb.indexedBranches"),
+						indexedBranchesPalette), BorderLayout.CENTER);
+
 		preReceivePalette = new JPalette<String>(true);
 		preReceiveInherited = new JLabel();
 		JPanel preReceivePanel = new JPanel(new BorderLayout(5, 5));
@@ -277,6 +285,9 @@
 			panel.addTab(Translation.get("gb.teams"), teamsPanel);
 		}
 		panel.addTab(Translation.get("gb.federation"), federationPanel);
+		if (protocolVersion >= 3) {
+			panel.addTab(Translation.get("gb.indexedBranches"), indexedBranchesPanel);
+		}
 		panel.addTab(Translation.get("gb.preReceiveScripts"), preReceivePanel);
 		panel.addTab(Translation.get("gb.postReceiveScripts"), postReceivePanel);
 
@@ -433,7 +444,8 @@
 		if (repository.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) {
 			repository.federationSets = setsPalette.getSelections();
 		}
-
+		
+		repository.indexedBranches = indexedBranchesPalette.getSelections();
 		repository.preReceiveScripts = preReceivePalette.getSelections();
 		repository.postReceiveScripts = postReceivePalette.getSelections();
 		return true;
@@ -470,6 +482,10 @@
 	public void setFederationSets(List<String> all, List<String> selected) {
 		setsPalette.setObjects(all, selected);
 	}
+	
+	public void setIndexedBranches(List<String> all, List<String> selected) {
+		indexedBranchesPalette.setObjects(all, selected);
+	}
 
 	public void setPreReceiveScripts(List<String> all, List<String> inherited,
 			List<String> selected) {
diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java
index 104010d..0643b60 100644
--- a/src/com/gitblit/client/RepositoriesPanel.java
+++ b/src/com/gitblit/client/RepositoriesPanel.java
@@ -357,6 +357,7 @@
 		dialog.setTeams(gitblit.getTeamnames(), null);
 		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), null);
+		dialog.setIndexedBranches(new ArrayList<String>(), null);
 		dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null),
 				gitblit.getPreReceiveScriptsInherited(null), null);
 		dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null),
@@ -419,6 +420,7 @@
 		dialog.setTeams(gitblit.getTeamnames(), gitblit.getPermittedTeamnames(repository));
 		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
+		dialog.setIndexedBranches(repository.getLocalBranches(), repository.indexedBranches);
 		dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(repository),
 				gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts);
 		dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository),
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java
index c087a35..324f7d4 100644
--- a/src/com/gitblit/models/RepositoryModel.java
+++ b/src/com/gitblit/models/RepositoryModel.java
@@ -22,6 +22,7 @@
 
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.FederationStrategy;
+import com.gitblit.utils.ArrayUtils;
 import com.gitblit.utils.StringUtils;
 
 /**
@@ -77,6 +78,19 @@
 		this.federationSets = new ArrayList<String>();
 		this.federationStrategy = FederationStrategy.FEDERATE_THIS;		
 	}
+	
+	public List<String> getLocalBranches() {
+		if (ArrayUtils.isEmpty(availableRefs)) {
+			return new ArrayList<String>();
+		}
+		List<String> localBranches = new ArrayList<String>();
+		for (String ref : availableRefs) {
+			if (ref.startsWith("refs/heads")) {
+				localBranches.add(ref);
+			}
+		}
+		return localBranches;
+	}
 
 	@Override
 	public String toString() {
diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
index 172859f..bd84ae3 100644
--- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java
+++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -39,7 +39,6 @@
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.CollectionModel;
 import org.apache.wicket.model.util.ListModel;
-import org.eclipse.jgit.lib.Constants;
 
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.FederationStrategy;
@@ -117,14 +116,8 @@
 				new StringChoiceRenderer(), 8, false);
 
 		// indexed local branches palette
-		List<String> allLocalBranches = new ArrayList<String>();
-		if (!ArrayUtils.isEmpty(repositoryModel.availableRefs)) {
-			for (String ref : repositoryModel.availableRefs) {
-				if (ref.startsWith(Constants.R_HEADS)) {
-					allLocalBranches.add(ref);
-				}
-			}
-		}
+		List<String> allLocalBranches = repositoryModel.getLocalBranches();
+
 		final Palette<String> indexedBranchesPalette = new Palette<String>("indexedBranches", new ListModel<String>(
 				indexedBranches), new CollectionModel<String>(allLocalBranches),
 				new StringChoiceRenderer(), 8, false);

--
Gitblit v1.9.1