From: Farrukh Najmi Date: Wed, 12 Nov 2008 22:52:54 GMT Subject: Re: Why is TreeWalk.forPath(...) returning null Message-ID: <491B5E46.6000706@wellfleetsoftware.com> In-Reply-To: <20081112224236.GX2932@spearce.org> Shawn O. Pearce wrote: > 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. > > My bad. I had a type in the path in my junit test :-[ Its working as expected. Thanks. -- Regards, Farrukh Najmi Web: http://www.wellfleetsoftware.com