我正在尝试使用JGit获取最新的提交(HEAD commit):
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)
我发现它成功打开了仓库,但是head
的值被设置为null
。我想知道为什么它找不到HEAD?我正在阅读这篇文档:http://wiki.eclipse.org/JGit/User_Guide 仓库的构建方式就像文档中所说的一样,
RevWalk
也是如此。我使用的是最新版本的JGit,即来自http://download.eclipse.org/jgit/maven的2.0.0.201206130900-r
。我的问题是:我需要在我的代码中做哪些改变才能使JGit返回实际的
RevCommit
实例而不是像现在一样返回null
?更新:这段代码:
val git = new Git(repo)
val logs: Iterable[RevCommit] = git.log().call().asInstanceOf[Iterable[RevCommit]]
抛出异常:No HEAD exists and no explicit starting revision was specified
这个异常有点奇怪,因为简单的git rev-parse HEAD
告诉我0b0e8bf2cae9201f30833d93cc248986276a4d75
,这意味着存储库中存在一个HEAD。我尝试了不同的存储库,包括我的和其他人的。