From 2cdb73b442169b48da1588ab7cfaac7256677a5e Mon Sep 17 00:00:00 2001
From: Philip L. McMahon <philip.l.mcmahon@gmail.com>
Date: Sat, 28 Jan 2012 13:57:39 -0500
Subject: [PATCH] RepositoryModel will use String rather than RefModel to track the current symbolic head and available heads.

---
 src/com/gitblit/GitBlit.java |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index b6bf7bf..7216126 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -69,7 +69,6 @@
 import com.gitblit.models.FederationProposal;
 import com.gitblit.models.FederationSet;
 import com.gitblit.models.Metric;
-import com.gitblit.models.RefModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.ServerSettings;
 import com.gitblit.models.ServerStatus;
@@ -787,10 +786,8 @@
 			model.mailingLists = new ArrayList<String>(Arrays.asList(config.getStringList(
 					"gitblit", null, "mailingList")));
 		}
-		model.defaultHead = JGitUtils.getDefaultHead(r);
-		model.availableHeads = new ArrayList<RefModel>();
-		model.availableHeads.addAll(JGitUtils.getLocalBranches(r, true, -1));
-		model.availableHeads.addAll(JGitUtils.getTags(r, true, -1));
+		model.defaultHead = JGitUtils.getSymbolicHeadTarget(r);
+		model.availableHeads = JGitUtils.getAvailableHeadTargets(r);
 		r.close();
 		return model;
 	}
@@ -986,8 +983,10 @@
 		// update settings
 		if (r != null) {
 			updateConfiguration(r, repository);
-			if (repository.defaultHead != null) {
-				JGitUtils.setDefaultHead(r, repository.defaultHead.reference);
+			// only update symbolic head if it changes
+			if (!StringUtils.isEmpty(repository.defaultHead) &&
+					!repository.defaultHead.equals(JGitUtils.getSymbolicHeadTarget(r))) {
+				JGitUtils.setSymbolicHeadTarget(r, repository.defaultHead);
 			}
 			r.close();
 		}

--
Gitblit v1.9.1