JGit und den Kopf finden
Ich versuche, das HEAD-Commit mit JGit in den Griff zu bekommen:
val builder = new FileRepositoryBuilder()
val repo = builder.setGitDir(new File("/www/test-repo"))
.readEnvironment()
.findGitDir()
.build()
val walk: RevWalk = new RevWalk(repo, 100)
val head: ObjectId = repo.resolve(Constants.HEAD)
val headCommit: RevCommit = walk.parseCommit(head)
Ich finde, dass es das Repo fein öffnet, aberhead
Wert ist auf gesetztnull
. Ich frage mich, warum es HEAD nicht finden kann.
Ich lese diese Dokumentation:http://wiki.eclipse.org/JGit/User_Guide
Das Repository ist so aufgebaut, wie es der Doc sagt, und dasRevWalk
auch. Ich verwende die neueste Version von JGit2.0.0.201206130900-r
vonhttp://download.eclipse.org/jgit/maven.
Meine Frage: Was muss ich in meinem Code ändern, damit JGit tatsächliche Instanzen von zurückgibt?RevCommit
anstattnull
mag es jetzt?
Aktualisieren: Dieser Code:
val git = new Git(repo)
val logs: Iterable[RevCommit] = git.log().call().asInstanceOf[Iterable[RevCommit]]
Gibt mir diese Ausnahme:No HEAD exists and no explicit starting revision was specified
Die Ausnahme ist ungerade, weil eine einfachegit rev-parse HEAD
sagt mir0b0e8bf2cae9201f30833d93cc248986276a4d75
Dies bedeutet, dass sich ein HEAD im Repository befindet. Ich habe verschiedene Repositories ausprobiert, meine und von anderen Leuten.