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