diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index 0736e3e..4291730 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -191,7 +191,7 @@ using(Git.open(getRepositoryDir(repository.owner, repository.name))){ git => val revCommit = JGitUtil.getRevCommitFromId(git, git.getRepository.resolve(id)) - val lastModifiedCommit = git.log.add(revCommit).addPath(path).setMaxCount(1).call.iterator.next() + val lastModifiedCommit = JGitUtil.getLastModifiedCommit(git, revCommit, path) getPathObjectId(git, path, revCommit).map { objectId => if(raw){ // Download @@ -315,7 +315,7 @@ // get specified commit JGitUtil.getDefaultBranch(git, repository, revstr).map { case (objectId, revision) => defining(JGitUtil.getRevCommitFromId(git, objectId)) { revCommit => - val lastModifiedCommit = if(path != ".") git.log.add(revCommit).addPath(path).setMaxCount(1).call.iterator.next else revCommit + val lastModifiedCommit = if(path == ".") revCommit else JGitUtil.getLastModifiedCommit(git, revCommit, path) // get files val files = JGitUtil.getFileList(git, revision, path) val parentPath = if (path == ".") Nil else path.split("/").toList diff --git a/src/main/scala/util/JGitUtil.scala b/src/main/scala/util/JGitUtil.scala index 51b210d..811ee74 100644 --- a/src/main/scala/util/JGitUtil.scala +++ b/src/main/scala/util/JGitUtil.scala @@ -652,4 +652,15 @@ }.head.id } + /** + * Returns the last modified commit of specified path + * @param git the Git object + * @param startCommit the search base commit id + * @param path the path of target file or directory + * @return the last modified commit of specified path + */ + def getLastModifiedCommit(git: Git, startCommit: RevCommit, path: String): RevCommit = { + return git.log.add(startCommit).addPath(path).setMaxCount(1).call.iterator.next + } + }