Release TreeWalk in recuresive function.

This commit is contained in:
Shintaro Murakami
2014-09-11 00:06:28 +09:00
parent 79432ff8ad
commit cf6dca84d8

View File

@@ -226,18 +226,17 @@ object JGitUtil {
@tailrec @tailrec
def simplifyPath(tuple: (ObjectId, FileMode, String, String, Option[String])): (ObjectId, FileMode, String, String, Option[String]) = { def simplifyPath(tuple: (ObjectId, FileMode, String, String, Option[String])): (ObjectId, FileMode, String, String, Option[String]) = {
val walk = new TreeWalk(git.getRepository)
walk.addTree(tuple._1)
val list = new scala.collection.mutable.ListBuffer[(ObjectId, FileMode, String, String, Option[String])] val list = new scala.collection.mutable.ListBuffer[(ObjectId, FileMode, String, String, Option[String])]
while (walk.next()) { using(new TreeWalk(git.getRepository)) { walk =>
if (list.size > 0) walk.addTree(tuple._1)
return tuple while (walk.next() && list.size < 2) {
val linkUrl = if (walk.getFileMode(0) == FileMode.GITLINK) { val linkUrl = if (walk.getFileMode(0) == FileMode.GITLINK) {
getSubmodules(git, revCommit.getTree).find(_.path == walk.getPathString).map(_.url) getSubmodules(git, revCommit.getTree).find(_.path == walk.getPathString).map(_.url)
} else None } else None
list.append((walk.getObjectId(0), walk.getFileMode(0), tuple._3 + "/" + walk.getPathString, tuple._4 + "/" + walk.getNameString, linkUrl)) list.append((walk.getObjectId(0), walk.getFileMode(0), tuple._3 + "/" + walk.getPathString, tuple._4 + "/" + walk.getNameString, linkUrl))
} }
if (list.size == 0 || list.exists(_._2 != FileMode.TREE)) }
if (list.size != 1 || list.exists(_._2 != FileMode.TREE))
tuple tuple
else else
simplifyPath(list(0)) simplifyPath(list(0))