diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 5565793..77d9e70 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -400,13 +400,7 @@ }) private def isLfsFile(git: Git, objectId: ObjectId): Boolean = { - JGitUtil.getObjectLoaderFromId(git, objectId){ loader => - if(loader.isLarge){ - false - } else { - new String(loader.getCachedBytes, "UTF-8").startsWith("version https://git-lfs.github.com/spec/v1") - } - }.getOrElse(false) + JGitUtil.getObjectLoaderFromId(git, objectId)(JGitUtil.isLfsPointer).getOrElse(false) } get("/:owner/:repository/blame/*"){ diff --git a/src/main/scala/gitbucket/core/util/JGitUtil.scala b/src/main/scala/gitbucket/core/util/JGitUtil.scala index 1f4ed5b..0ef399b 100644 --- a/src/main/scala/gitbucket/core/util/JGitUtil.scala +++ b/src/main/scala/gitbucket/core/util/JGitUtil.scala @@ -802,17 +802,22 @@ } } + def isLfsPointer(loader: ObjectLoader): Boolean = { + !loader.isLarge && new String(loader.getBytes(), "UTF-8").startsWith("version https://git-lfs.github.com/spec/v1") + } + def getContentInfo(git: Git, path: String, objectId: ObjectId): ContentInfo = { // Viewer using(git.getRepository.getObjectDatabase){ db => val loader = db.open(objectId) + val isLfs = isLfsPointer(loader) val large = FileUtil.isLarge(loader.getSize) val viewer = if(FileUtil.isImage(path)) "image" else if(large) "large" else "other" val bytes = if(viewer == "other") JGitUtil.getContentFromId(git, objectId, false) else None val size = Some(getContentSize(loader)) if(viewer == "other"){ - if(bytes.isDefined && FileUtil.isText(bytes.get)){ + if(!isLfs && bytes.isDefined && FileUtil.isText(bytes.get)){ // text ContentInfo("text", size, Some(StringUtil.convertFromByteArray(bytes.get)), Some(StringUtil.detectEncoding(bytes.get))) } else {