mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-09 06:55:54 +01:00
not to make a temporary file when archive
This commit is contained in:
@@ -532,7 +532,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private def archiveRepository(name: String, suffix: String, repository: RepositoryService.RepositoryInfo): File = {
|
private def archiveRepository(name: String, suffix: String, repository: RepositoryService.RepositoryInfo): Unit = {
|
||||||
val revision = name.stripSuffix(suffix)
|
val revision = name.stripSuffix(suffix)
|
||||||
val workDir = getDownloadWorkDir(repository.owner, repository.name, session.getId)
|
val workDir = getDownloadWorkDir(repository.owner, repository.name, session.getId)
|
||||||
if(workDir.exists) {
|
if(workDir.exists) {
|
||||||
@@ -540,21 +540,23 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
workDir.mkdirs
|
workDir.mkdirs
|
||||||
|
|
||||||
val file = new File(workDir, repository.name + "-" +
|
val filename = repository.name + "-" +
|
||||||
(if(revision.length == 40) revision.substring(0, 10) else revision).replace('/', '_') + suffix)
|
(if(revision.length == 40) revision.substring(0, 10) else revision).replace('/', '_') + suffix
|
||||||
|
|
||||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))){ git =>
|
using(Git.open(getRepositoryDir(repository.owner, repository.name))){ git =>
|
||||||
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(revision))
|
val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(revision))
|
||||||
using(new java.io.FileOutputStream(file)) { out =>
|
|
||||||
|
contentType = "application/octet-stream"
|
||||||
|
response.setHeader("Content-Disposition", s"attachment; filename=${filename}")
|
||||||
|
response.setBufferSize(1024 * 1024);
|
||||||
|
|
||||||
git.archive
|
git.archive
|
||||||
.setFormat(suffix.tail)
|
.setFormat(suffix.tail)
|
||||||
.setTree(revCommit.getTree)
|
.setTree(revCommit.getTree)
|
||||||
.setOutputStream(out)
|
.setOutputStream(response.getOutputStream)
|
||||||
.call()
|
.call()
|
||||||
}
|
|
||||||
contentType = "application/octet-stream"
|
Unit
|
||||||
response.setHeader("Content-Disposition", s"attachment; filename=${file.getName}")
|
|
||||||
file
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user