Fix for repository downloading improvement in #2014

This commit is contained in:
Naoki Takezoe
2018-05-24 01:25:07 +09:00
parent fbe60a59d7
commit 2a489870a1
2 changed files with 19 additions and 25 deletions

View File

@@ -31,7 +31,6 @@ import org.eclipse.jgit.archive.{TgzFormat, ZipFormat}
import org.eclipse.jgit.dircache.{DirCache, DirCacheBuilder} import org.eclipse.jgit.dircache.{DirCache, DirCacheBuilder}
import org.eclipse.jgit.errors.MissingObjectException import org.eclipse.jgit.errors.MissingObjectException
import org.eclipse.jgit.lib._ import org.eclipse.jgit.lib._
import org.eclipse.jgit.revwalk.RevWalk
import org.eclipse.jgit.transport.{ReceiveCommand, ReceivePack} import org.eclipse.jgit.transport.{ReceiveCommand, ReceivePack}
import org.eclipse.jgit.treewalk.TreeWalk import org.eclipse.jgit.treewalk.TreeWalk
import org.eclipse.jgit.treewalk.filter.PathFilter import org.eclipse.jgit.treewalk.filter.PathFilter
@@ -1151,28 +1150,25 @@ trait RepositoryViewerControllerBase extends ControllerBase {
val repositorySuffix = (if (sha1.startsWith(revision)) sha1 else revision).replace('/', '-') val repositorySuffix = (if (sha1.startsWith(revision)) sha1 else revision).replace('/', '-')
val pathSuffix = if (path.isEmpty) "" else '-' + path.replace('/', '-') val pathSuffix = if (path.isEmpty) "" else '-' + path.replace('/', '-')
val baseName = repository.name + "-" + repositorySuffix + pathSuffix val baseName = repository.name + "-" + repositorySuffix + pathSuffix
val filename = baseName + archiveFormat
using(new RevWalk(git.getRepository)) { revWalk => using(new TreeWalk(git.getRepository)) { treeWalk =>
using(new TreeWalk(git.getRepository)) { treeWalk => treeWalk.addTree(revCommit.getTree)
treeWalk.addTree(revCommit.getTree) treeWalk.setRecursive(true)
treeWalk.setRecursive(true) if (!path.isEmpty) {
if (!path.isEmpty) { treeWalk.setFilter(PathFilter.create(path))
treeWalk.setFilter(PathFilter.create(path)) }
} if (treeWalk != null) {
if (treeWalk != null) { while (treeWalk.next()) {
while (treeWalk.next()) { val entryPath =
val entryPath = if (path.isEmpty) baseName + "/" + treeWalk.getPathString
if (path.isEmpty) baseName + "/" + treeWalk.getPathString else path.split("/").last + treeWalk.getPathString.substring(path.length)
else path.split("/").last + treeWalk.getPathString.substring(path.length) val size = JGitUtil.getFileSize(git, repository, treeWalk)
val size = JGitUtil.getFileSize(git, repository, treeWalk) val mode = treeWalk.getFileMode.getBits
val mode = treeWalk.getFileMode.getBits val entry: ArchiveEntry = entryCreator(entryPath, size, mode)
val entry: ArchiveEntry = entryCreator(entryPath, size, mode) JGitUtil.openFile(git, repository, revCommit.getTree, treeWalk.getPathString) { in =>
JGitUtil.openFile(git, repository, revCommit.getTree, treeWalk.getPathString) { in => archive.putArchiveEntry(entry)
archive.putArchiveEntry(entry) IOUtils.copy(in, archive)
IOUtils.copy(in, archive) archive.closeArchiveEntry()
archive.closeArchiveEntry()
}
} }
} }
} }

View File

@@ -1253,7 +1253,7 @@ object JGitUtil {
f(in) f(in)
} }
} else { } else {
throw new EmptyLfsAttributesException throw new NoSuchElementException("LFS attribute is empty.")
} }
} else { } else {
using(loader.openStream()) { in => using(loader.openStream()) { in =>
@@ -1277,6 +1277,4 @@ object JGitUtil {
JGitUtil.getLfsObjects(text) JGitUtil.getLfsObjects(text)
} }
case class EmptyLfsAttributesException() extends Exception
} }