diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala
index 55e2043..c74a4f0 100644
--- a/src/main/scala/app/RepositoryViewerController.scala
+++ b/src/main/scala/app/RepositoryViewerController.scala
@@ -126,10 +126,13 @@
}
val treeWalk = new TreeWalk(git.getRepository)
- treeWalk.addTree(revCommit.getTree)
- treeWalk.setRecursive(true)
- val objectId = getPathObjectId(path, treeWalk)
- treeWalk.release
+ val objectId = try {
+ treeWalk.addTree(revCommit.getTree)
+ treeWalk.setRecursive(true)
+ getPathObjectId(path, treeWalk)
+ } finally {
+ treeWalk.release
+ }
if(raw){
// Download
@@ -137,10 +140,22 @@
JGitUtil.getContent(git, objectId, false).get
} else {
// Viewer
- val large = FileTypeUtil.isLarge(git.getRepository.getObjectDatabase.open(objectId).getSize)
- val viewer = if(FileTypeUtil.isImage(path)) "image" else if(large) "large" else "text"
- val content = JGitUtil.ContentInfo(viewer,
- if(viewer == "text") JGitUtil.getContent(git, objectId, false).map(new String(_, "UTF-8")) else None)
+ val large = FileTypeUtil.isLarge(git.getRepository.getObjectDatabase.open(objectId).getSize)
+ val viewer = if(FileTypeUtil.isImage(path)) "image" else if(large) "large" else "other"
+ val bytes = if(viewer == "other") JGitUtil.getContent(git, objectId, false) else None
+
+ val content = if(viewer == "other"){
+ if(bytes.isDefined && FileTypeUtil.isText(bytes.get)){
+ // text
+ JGitUtil.ContentInfo("text", bytes.map(new String(_, "UTF-8")))
+ } else {
+ // binary
+ JGitUtil.ContentInfo("binary", None)
+ }
+ } else {
+ // image or large
+ JGitUtil.ContentInfo(viewer, None)
+ }
repo.html.blob(id, repositoryInfo, path.split("/").toList, content, new JGitUtil.CommitInfo(revCommit))
}
diff --git a/src/main/twirl/repo/blob.scala.html b/src/main/twirl/repo/blob.scala.html
index 32dde5c..3078a52 100644
--- a/src/main/twirl/repo/blob.scala.html
+++ b/src/main/twirl/repo/blob.scala.html
@@ -37,7 +37,7 @@
@if(content.viewType == "image"){
}
- @if(content.viewType == "large"){
+ @if(content.viewType == "large" || content.viewType == "binary"){