From 30f9d25d77ccb5cd978d4cf8fa389ec819e90e95 Mon Sep 17 00:00:00 2001
From: Philip L. McMahon <philip.l.mcmahon@gmail.com>
Date: Fri, 27 Jan 2012 02:02:19 -0500
Subject: [PATCH] Correct update of HEAD symbolic reference when target is a tag.

---
 src/com/gitblit/GitBlit.java |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index 2448f7a..b6bf7bf 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -69,6 +69,7 @@
 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;
@@ -786,6 +787,10 @@
 			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));
 		r.close();
 		return model;
 	}
@@ -981,6 +986,9 @@
 		// update settings
 		if (r != null) {
 			updateConfiguration(r, repository);
+			if (repository.defaultHead != null) {
+				JGitUtils.setDefaultHead(r, repository.defaultHead.reference);
+			}
 			r.close();
 		}
 	}
@@ -1759,9 +1767,7 @@
 		try {
 			// check to see if this "file" is a login service class
 			Class<?> realmClass = Class.forName(realm);
-			if (IUserService.class.isAssignableFrom(realmClass)) {
-				loginService = (IUserService) realmClass.newInstance();
-			}
+			loginService = (IUserService) realmClass.newInstance();
 		} catch (Throwable t) {
 			loginService = new GitblitUserService();
 		}

--
Gitblit v1.9.1