From ad054d2f80b293e81f6bd7081dbbe4d61070be2e Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sun, 14 Jan 2018 02:12:09 +0900 Subject: [PATCH] Delete removed release files when the release is updated --- .../core/controller/ReleasesController.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/scala/gitbucket/core/controller/ReleasesController.scala b/src/main/scala/gitbucket/core/controller/ReleasesController.scala index 68ea290b6..c346ed8c3 100644 --- a/src/main/scala/gitbucket/core/controller/ReleasesController.scala +++ b/src/main/scala/gitbucket/core/controller/ReleasesController.scala @@ -116,14 +116,23 @@ trait ReleaseControllerBase extends ControllerBase { updateRelease(repository.owner, repository.name, tag, form.name, form.content) // Delete and Insert RELEASE_ASSET + val assets = getReleaseAssets(repository.owner, repository.name, tag) deleteReleaseAssets(repository.owner, repository.name, tag) - request.getParameterNames.asScala.filter(_.startsWith("file:")).foreach { paramName => + val fileIds = request.getParameterNames.asScala.filter(_.startsWith("file:")).map { paramName => val Array(_, fileId) = paramName.split(":") val fileName = params(paramName) val size = new java.io.File(getReleaseFilesDir(repository.owner, repository.name), release.tag + "/" + fileId).length createReleaseAsset(repository.owner, repository.name, tag, fileId, fileName, size, loginAccount) + fileId + } + + assets.foreach { asset => + if(!fileIds.contains(asset.fileName)){ + val file = new java.io.File(getReleaseFilesDir(repository.owner, repository.name), release.tag + "/" + asset.fileName) + FileUtils.forceDelete(file) + } } redirect(s"/${release.userName}/${release.repositoryName}/releases/${tag}")