mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 06:25:51 +01:00
Fixed diff for initial commit.
This commit is contained in:
@@ -13,6 +13,8 @@ import org.eclipse.jgit.revwalk.RevWalk
|
|||||||
import org.eclipse.jgit.treewalk.CanonicalTreeParser
|
import org.eclipse.jgit.treewalk.CanonicalTreeParser
|
||||||
import org.eclipse.jgit.diff.DiffEntry.ChangeType
|
import org.eclipse.jgit.diff.DiffEntry.ChangeType
|
||||||
import org.eclipse.jgit.errors.MissingObjectException
|
import org.eclipse.jgit.errors.MissingObjectException
|
||||||
|
import org.eclipse.jgit.treewalk.TreeWalk
|
||||||
|
import org.eclipse.jgit.diff.DiffEntry
|
||||||
|
|
||||||
case class RepositoryInfo(owner: String, name: String, url: String, branchList: List[String], tags: List[String])
|
case class RepositoryInfo(owner: String, name: String, url: String, branchList: List[String], tags: List[String])
|
||||||
|
|
||||||
@@ -133,24 +135,32 @@ class RepositoryViewerServlet extends ServletBase {
|
|||||||
val rev = ite.next
|
val rev = ite.next
|
||||||
val old = ite.next
|
val old = ite.next
|
||||||
|
|
||||||
println(new String(rev.getRawBuffer()))
|
val diffs = if(old != null){
|
||||||
|
// get diff between specified commit and its previous commit
|
||||||
// get diff
|
|
||||||
val reader = git.getRepository.newObjectReader
|
val reader = git.getRepository.newObjectReader
|
||||||
|
|
||||||
val oldTreeIter = new CanonicalTreeParser
|
val oldTreeIter = new CanonicalTreeParser
|
||||||
oldTreeIter.reset(reader, git.getRepository.resolve(old.name + "^{tree}"))
|
oldTreeIter.reset(reader, git.getRepository.resolve(old.name + "^{tree}"))
|
||||||
|
|
||||||
// TODO specify previous commit
|
|
||||||
val newTreeIter = new CanonicalTreeParser
|
val newTreeIter = new CanonicalTreeParser
|
||||||
newTreeIter.reset(reader, git.getRepository.resolve(id + "^{tree}"))
|
newTreeIter.reset(reader, git.getRepository.resolve(id + "^{tree}"))
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import scala.collection.JavaConverters._
|
||||||
val diffs = git.diff.setNewTree(newTreeIter).setOldTree(oldTreeIter).call.asScala.map { diff =>
|
git.diff.setNewTree(newTreeIter).setOldTree(oldTreeIter).call.asScala.map { diff =>
|
||||||
DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath,
|
DiffInfo(diff.getChangeType, diff.getOldPath, diff.getNewPath,
|
||||||
getContent(git, diff.getOldId.toObjectId),
|
getContent(git, diff.getOldId.toObjectId),
|
||||||
getContent(git, diff.getNewId.toObjectId))
|
getContent(git, diff.getNewId.toObjectId))
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// initial commit
|
||||||
|
val walk = new TreeWalk(git.getRepository)
|
||||||
|
walk.addTree(rev.getTree)
|
||||||
|
val buffer = new scala.collection.mutable.ListBuffer[DiffInfo]()
|
||||||
|
while(walk.next){
|
||||||
|
buffer.append(DiffInfo(ChangeType.ADD, null, walk.getPathString, None, getContent(git, walk.getObjectId(0))))
|
||||||
|
}
|
||||||
|
buffer.toList
|
||||||
|
}
|
||||||
|
|
||||||
html.commit(branch,
|
html.commit(branch,
|
||||||
CommitInfo(rev.getName, rev.getCommitterIdent.getWhen, rev.getCommitterIdent.getName, rev.getFullMessage),
|
CommitInfo(rev.getName, rev.getCommitterIdent.getWhen, rev.getCommitterIdent.getName, rev.getFullMessage),
|
||||||
@@ -158,7 +168,7 @@ class RepositoryViewerServlet extends ServletBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def getContent(git: Git, id: ObjectId): Option[String] = try {
|
def getContent(git: Git, id: ObjectId): Option[String] = try {
|
||||||
Some(new String(git.getRepository.getObjectDatabase.open(id).getBytes()))
|
Some(new String(git.getRepository.getObjectDatabase.open(id).getBytes, "UTF-8"))
|
||||||
} catch {
|
} catch {
|
||||||
case e: MissingObjectException => None
|
case e: MissingObjectException => None
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user