From: Shawn O. Pearce Date: Wed, 12 Nov 2008 22:42:36 GMT Subject: Re: Why is TreeWalk.forPath(...) returning null Message-ID: <20081112224236.GX2932@spearce.org> In-Reply-To: <491B579E.6050408@wellfleetsoftware.com> Farrukh Najmi wrote: > > My "git status" command shows: > > # On branch master > # Changed but not updated: > # (use "git add ..." to update what will be committed) > # > # modified: xml/minDB/SubmitObjectsRequest_CMSScheme.xml > > The file above was committed and then modified. I want to use jgit to > find the comitted version of that file. > > When I do the following code I get a null treeWalk? Why is that? What > should I specify for path instead? > > String path = "xml/minDB/SubmitObjectsRequest_CMSScheme.xml"; > String versionName = Constants.HEAD; > > Commit commit = repository.mapCommit(versionName); > > if (commit == null) { > log.trace("Did not find Commit. versionName:" + > versionName); > } else { > ObjectId[] ids = {commit.getTree().getId()}; > TreeWalk treeWalk = TreeWalk.forPath(repository, path, ids); > } Huh. That should have worked. TreeWalk.forPath returns null if the path doesn't get found. So it sounds like jgit isn't matching the path. Its a pretty simple operation, I'm not sure why its failing here. I'd run it through a debugger to try and see why the TreeWalk didn't match your path. Your code is logically the same as: git rev-parse HEAD:$path so it should find the blob if Git would have found it. -- Shawn.