From 16038ce2adf5f06f75230150f75d110a804414c1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 22 Oct 2011 09:48:17 -0400
Subject: [PATCH] Fixed collision error on rename repository or user

---
 src/com/gitblit/GitBlit.java |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index eaf6a95..6f537ec 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -440,6 +440,14 @@
 	 */
 	public void updateUserModel(String username, UserModel user, boolean isCreate)
 			throws GitBlitException {
+		if (!username.equalsIgnoreCase(user.username)) {
+			if (userService.getUserModel(user.username) != null) {
+				throw new GitBlitException(
+						MessageFormat
+								.format("Failed to rename ''{0}'' because ''{1}'' already exists.",
+										username, user.username));
+			}
+		}
 		if (!userService.updateUserModel(username, user)) {
 			throw new GitBlitException(isCreate ? "Failed to add user!" : "Failed to update user!");
 		}
@@ -722,6 +730,16 @@
 		} else {
 			// rename repository
 			if (!repositoryName.equalsIgnoreCase(repository.name)) {
+				if (!repository.name.toLowerCase().endsWith(
+						org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
+					repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;
+				}
+				if (new File(repositoriesFolder, repository.name).exists()) {
+					throw new GitBlitException(
+							MessageFormat
+									.format("Failed to rename ''{0}'' because ''{1}'' already exists.",
+											repositoryName, repository.name));
+				}
 				closeRepository(repositoryName);
 				File folder = new File(repositoriesFolder, repositoryName);
 				File destFolder = new File(repositoriesFolder, repository.name);

--
Gitblit v1.9.1