diff --git a/src/main/scala/app/AccountController.scala b/src/main/scala/app/AccountController.scala index 3304480..56ad902 100644 --- a/src/main/scala/app/AccountController.scala +++ b/src/main/scala/app/AccountController.scala @@ -291,7 +291,7 @@ * Create new repository. */ post("/new", newRepositoryForm)(usersOnly { form => - LockUtil.lock(s"${form.owner}/${form.name}/create"){ + LockUtil.lock(s"${form.owner}/${form.name}"){ if(getRepository(form.owner, form.name, context.baseUrl).isEmpty){ val ownerAccount = getAccountByUserName(form.owner).get val loginAccount = context.loginAccount.get @@ -354,7 +354,7 @@ val loginAccount = context.loginAccount.get val loginUserName = loginAccount.userName - LockUtil.lock(s"${loginUserName}/${repository.name}/create"){ + LockUtil.lock(s"${loginUserName}/${repository.name}"){ if(repository.owner == loginUserName || getRepository(loginAccount.userName, repository.name, baseUrl).isDefined){ // redirect to the repository if repository already exists redirect(s"/${loginUserName}/${repository.name}") diff --git a/src/main/scala/app/PullRequestsController.scala b/src/main/scala/app/PullRequestsController.scala index 174160f..41d35bd 100644 --- a/src/main/scala/app/PullRequestsController.scala +++ b/src/main/scala/app/PullRequestsController.scala @@ -13,7 +13,6 @@ import service.IssuesService._ import service.PullRequestService._ import util.JGitUtil.DiffInfo -import service.RepositoryService.RepositoryTreeNode import util.JGitUtil.CommitInfo import org.slf4j.LoggerFactory import org.eclipse.jgit.merge.MergeStrategy @@ -124,7 +123,7 @@ params("id").toIntOpt.flatMap { issueId => val owner = repository.owner val name = repository.name - LockUtil.lock(s"${owner}/${name}/merge"){ + LockUtil.lock(s"${owner}/${name}"){ getPullRequest(owner, name, issueId).map { case (issue, pullreq) => using(Git.open(getRepositoryDir(owner, name))) { git => // mark issue as merged and close. @@ -367,7 +366,7 @@ */ private def checkConflict(userName: String, repositoryName: String, branch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String): Boolean = { - LockUtil.lock(s"${userName}/${repositoryName}/merge-check"){ + LockUtil.lock(s"${userName}/${repositoryName}"){ using(Git.open(getRepositoryDir(requestUserName, requestRepositoryName))) { git => val remoteRefName = s"refs/heads/${branch}" val tmpRefName = s"refs/merge-check/${userName}/${branch}" @@ -403,7 +402,7 @@ private def checkConflictInPullRequest(userName: String, repositoryName: String, branch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String, issueId: Int): Boolean = { - LockUtil.lock(s"${userName}/${repositoryName}/merge") { + LockUtil.lock(s"${userName}/${repositoryName}") { using(Git.open(getRepositoryDir(userName, repositoryName))) { git => // merge val merger = MergeStrategy.RECURSIVE.newMerger(git.getRepository, true) diff --git a/src/main/scala/app/RepositorySettingsController.scala b/src/main/scala/app/RepositorySettingsController.scala index 92b4360..ed30d93 100644 --- a/src/main/scala/app/RepositorySettingsController.scala +++ b/src/main/scala/app/RepositorySettingsController.scala @@ -2,7 +2,7 @@ import service._ import util.Directory._ -import util.{UsersAuthenticator, OwnerAuthenticator} +import util.{LockUtil, UsersAuthenticator, OwnerAuthenticator} import jp.sf.amateras.scalatra.forms._ import org.apache.commons.io.FileUtils import org.scalatra.i18n.Messages @@ -185,15 +185,17 @@ post("/:owner/:repository/settings/transfer", transferForm)(ownerOnly { (form, repository) => // Change repository owner if(repository.owner != form.newOwner){ - // Update database - renameRepository(repository.owner, repository.name, form.newOwner, repository.name) - // Move git repository - defining(getRepositoryDir(repository.owner, repository.name)){ dir => - FileUtils.moveDirectory(dir, getRepositoryDir(form.newOwner, repository.name)) - } - // Move wiki repository - defining(getWikiRepositoryDir(repository.owner, repository.name)){ dir => - FileUtils.moveDirectory(dir, getWikiRepositoryDir(form.newOwner, repository.name)) + LockUtil.lock(s"${repository.owner}/${repository.name}"){ + // Update database + renameRepository(repository.owner, repository.name, form.newOwner, repository.name) + // Move git repository + defining(getRepositoryDir(repository.owner, repository.name)){ dir => + FileUtils.moveDirectory(dir, getRepositoryDir(form.newOwner, repository.name)) + } + // Move wiki repository + defining(getWikiRepositoryDir(repository.owner, repository.name)){ dir => + FileUtils.moveDirectory(dir, getWikiRepositoryDir(form.newOwner, repository.name)) + } } } redirect(s"/${form.newOwner}/${repository.name}") @@ -203,12 +205,13 @@ * Delete the repository. */ post("/:owner/:repository/settings/delete")(ownerOnly { repository => - deleteRepository(repository.owner, repository.name) + LockUtil.lock(s"${repository.owner}/${repository.name}"){ + deleteRepository(repository.owner, repository.name) - FileUtils.deleteDirectory(getRepositoryDir(repository.owner, repository.name)) - FileUtils.deleteDirectory(getWikiRepositoryDir(repository.owner, repository.name)) - FileUtils.deleteDirectory(getTemporaryDir(repository.owner, repository.name)) - + FileUtils.deleteDirectory(getRepositoryDir(repository.owner, repository.name)) + FileUtils.deleteDirectory(getWikiRepositoryDir(repository.owner, repository.name)) + FileUtils.deleteDirectory(getTemporaryDir(repository.owner, repository.name)) + } redirect(s"/${repository.owner}") })