JGit and finding the Head

I'm trying to get my hands on the HEAD commit with JGit:

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)

I find that it opens the repo fine, but head value is set to null. I wonder why it can't find HEAD?

I'm reading this documentation: http://wiki.eclipse.org/JGit/User_Guide

The repository is constructed just like the doc says, and the RevWalk as well. I'm using the latest version of JGit which is 2.0.0.201206130900-r from http://download.eclipse.org/jgit/maven.

My question: what do I need to change in my code to get JGit to return actual instances of RevCommit instead of null like it now does?

Update: This code:

val git = new Git(repo)
val logs: Iterable[RevCommit] = git.log().call().asInstanceOf[Iterable[RevCommit]]

Gives me this exception: No HEAD exists and no explicit starting revision was specified

The exception is odd, because a simple git rev-parse HEAD tells me 0b0e8bf2cae9201f30833d93cc248986276a4d75, which means there is a HEAD in the repository. I've tried different repositories, mine and from other people.

Answers


You need to point to the Git metadata directory (probably /www/test-repo/.git) when you call setGitDir, not to the working directory (/www/test-repo).

I have to admit I'm not sure what findGitDir is supposed to do, but I've run into this problem before and specifying the .git directory worked.


Need Your Help

How to distort a Sprite into a trapezoid?

iphone core-animation cocos2d-iphone calayer

I am trying to transform a Sprite into a trapezoid, I don't really care about the interpolation even though I know without it my image will lose detail. All I really want to do is Transform my

What is Horizontal Accuracy

android ios geolocation gps unity3d

I am new bee in Unity3d and working on location app. I am enabling location on device and getting current location. I get few parameter in response which are Lat Long Altitude and Horizontal Accura...