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/FileUserService.java |   61 ++++++++++++++++++------------
 1 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/src/com/gitblit/FileUserService.java b/src/com/gitblit/FileUserService.java
index 9c4e507..dfc4da8 100644
--- a/src/com/gitblit/FileUserService.java
+++ b/src/com/gitblit/FileUserService.java
@@ -33,6 +33,7 @@
 
 import com.gitblit.models.TeamModel;
 import com.gitblit.models.UserModel;
+import com.gitblit.utils.ArrayUtils;
 import com.gitblit.utils.DeepCopier;
 import com.gitblit.utils.StringUtils;
 
@@ -164,11 +165,11 @@
 	@Override
 	public UserModel getUserModel(String username) {
 		Properties allUsers = read();
-		String userInfo = allUsers.getProperty(username);
+		String userInfo = allUsers.getProperty(username.toLowerCase());
 		if (userInfo == null) {
 			return null;
 		}
-		UserModel model = new UserModel(username);
+		UserModel model = new UserModel(username.toLowerCase());
 		String[] userValues = userInfo.split(",");
 		model.password = userValues[0];
 		for (int i = 1; i < userValues.length; i++) {
@@ -218,7 +219,7 @@
 	 */
 	@Override
 	public boolean updateUserModel(String username, UserModel model) {
-		try {
+		try {			
 			Properties allUsers = read();
 			UserModel oldUser = getUserModel(username);
 			ArrayList<String> roles = new ArrayList<String>(model.repositories);
@@ -240,8 +241,8 @@
 			}
 			// trim trailing comma
 			sb.setLength(sb.length() - 1);
-			allUsers.remove(username);
-			allUsers.put(model.username, sb.toString());
+			allUsers.remove(username.toLowerCase());
+			allUsers.put(model.username.toLowerCase(), sb.toString());
 
 			// null check on "final" teams because JSON-sourced UserModel
 			// can have a null teams object
@@ -660,7 +661,7 @@
 				} else {
 					// user definition
 					String password = roles[0];
-					cookies.put(StringUtils.getSHA1(username + password), username);
+					cookies.put(StringUtils.getSHA1(username.toLowerCase() + password), username.toLowerCase());
 				}
 			}
 		}
@@ -868,29 +869,39 @@
 
 	private void updateTeamCache(Properties allUsers, String teamname, TeamModel model) {
 		StringBuilder sb = new StringBuilder();
-		for (String repository : model.repositories) {
-			sb.append(repository);
-			sb.append(',');
+		if (!ArrayUtils.isEmpty(model.repositories)) {
+			for (String repository : model.repositories) {
+				sb.append(repository);
+				sb.append(',');
+			}
 		}
-		for (String user : model.users) {
-			sb.append('!');
-			sb.append(user);
-			sb.append(',');
+		if (!ArrayUtils.isEmpty(model.users)) {
+			for (String user : model.users) {
+				sb.append('!');
+				sb.append(user);
+				sb.append(',');
+			}
 		}
-		for (String address : model.mailingLists) {
-			sb.append('&');
-			sb.append(address);
-			sb.append(',');
+		if (!ArrayUtils.isEmpty(model.mailingLists)) {
+			for (String address : model.mailingLists) {
+				sb.append('&');
+				sb.append(address);
+				sb.append(',');
+			}
 		}
-		for (String script : model.preReceiveScripts) {
-			sb.append('^');
-			sb.append(script);
-			sb.append(',');
+		if (!ArrayUtils.isEmpty(model.preReceiveScripts)) {
+			for (String script : model.preReceiveScripts) {
+				sb.append('^');
+				sb.append(script);
+				sb.append(',');
+			}
 		}
-		for (String script : model.postReceiveScripts) {
-			sb.append('%');
-			sb.append(script);
-			sb.append(',');
+		if (!ArrayUtils.isEmpty(model.postReceiveScripts)) {
+			for (String script : model.postReceiveScripts) {
+				sb.append('%');
+				sb.append(script);
+				sb.append(',');
+			}
 		}
 		// trim trailing comma
 		sb.setLength(sb.length() - 1);

--
Gitblit v1.9.1