git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Why is TreeWalk.forPath(...) returning null

From
Shawn O. Pearce <spearce@spearce.org>
Date
Nov 12, 2008, 22:42 UTC
Message-ID
<20081112224236.GX2932@spearce.org>
In-Reply-To
<491B579E.6050408@wellfleetsoftware.com>
Farrukh Najmi <farrukh@wellfleetsoftware.com> wrote:
Show 27 quoted lines
>
> My "git status" command shows:
>
> # On branch master
> # Changed but not updated:
> #   (use "git add <file>..." 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.
Previous: Farrukh NajmiNext: Farrukh Najmi
Message 2 of 3 in “Why is TreeWalk.forPath(...) returning null”
  1. Farrukh NajmiNov 12, 2008
  2. Shawn O. PearceNov 12, 2008
  3. Farrukh NajmiNov 12, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.