Merge pull request #1824 from yaroot/lfs

Treat LFS files as large binaries in the web viewer
This commit is contained in:
Naoki Takezoe
2018-01-05 13:52:08 +09:00
committed by GitHub
2 changed files with 7 additions and 8 deletions

View File

@@ -400,13 +400,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
})
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/*"){

View File

@@ -802,17 +802,22 @@ object JGitUtil {
}
}
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 {