From f538950d642f3cc0b6bc15922f845f52946d83df Mon Sep 17 00:00:00 2001 From: Shreejan Shrestha Date: Tue, 23 Mar 2021 09:06:38 +0900 Subject: [PATCH] Solve repository deletion error on Windows (#2711) - Added function to delete given folder recursively. - Used the function for deleting the folder, while deleting repository. fixes #2628 --- .../gitbucket/core/service/RepositoryService.scala | 9 +++++---- src/main/scala/gitbucket/core/util/FileUtil.scala | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index 831820eac..e836446f2 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -237,10 +237,11 @@ trait RepositoryService { LockUtil.lock(s"${repository.userName}/${repository.repositoryName}") { deleteRepositoryOnModel(repository.userName, repository.repositoryName) - FileUtils.deleteDirectory(getRepositoryDir(repository.userName, repository.repositoryName)) - FileUtils.deleteDirectory(getWikiRepositoryDir(repository.userName, repository.repositoryName)) - FileUtils.deleteDirectory(getTemporaryDir(repository.userName, repository.repositoryName)) - FileUtils.deleteDirectory(getRepositoryFilesDir(repository.userName, repository.repositoryName)) + FileUtil.deleteRecursively(getRepositoryDir(repository.userName, repository.repositoryName)) + + FileUtil.deleteRecursively(getWikiRepositoryDir(repository.userName, repository.repositoryName)) + FileUtil.deleteRecursively(getTemporaryDir(repository.userName, repository.repositoryName)) + FileUtil.deleteRecursively(getRepositoryFilesDir(repository.userName, repository.repositoryName)) // Call hooks PluginRegistry().getRepositoryHooks.foreach(_.deleted(repository.userName, repository.repositoryName)) diff --git a/src/main/scala/gitbucket/core/util/FileUtil.scala b/src/main/scala/gitbucket/core/util/FileUtil.scala index 1a30acebf..1f266ab70 100644 --- a/src/main/scala/gitbucket/core/util/FileUtil.scala +++ b/src/main/scala/gitbucket/core/util/FileUtil.scala @@ -92,4 +92,14 @@ object FileUtil { name } + /** + * Delete given folder recursively. + */ + def deleteRecursively(f: File): Boolean = { + if (f.isDirectory) f.listFiles match { + case files: Array[File] => files.foreach(deleteRecursively) + case null => + } + f.delete() + } }