# Why is TreeWalk.forPath(...) returning null

3 messages from 2008-11-12 to 2008-11-12. Participants: Farrukh Najmi, Shawn O. Pearce.
Thread: https://gitlist.dev/t/16294

## Farrukh Najmi, 2008-11-12 22:24

Subject: Why is TreeWalk.forPath(...) returning null
Message-ID: <491B579E.6050408@wellfleetsoftware.com>
URL: https://gitlist.dev/e/491B579E.6050408%40wellfleetsoftware.com

```

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);
            }

Thanks.

-- 
Regards,
Farrukh Najmi

Web: http://www.wellfleetsoftware.com

```

## Shawn O. Pearce, 2008-11-12 22:42

Subject: Re: Why is TreeWalk.forPath(...) returning null
Message-ID: <20081112224236.GX2932@spearce.org>
URL: https://gitlist.dev/e/20081112224236.GX2932%40spearce.org
In-Reply-To: <491B579E.6050408@wellfleetsoftware.com>

```
Farrukh Najmi <farrukh@wellfleetsoftware.com> wrote:
>
> 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.

```

## Farrukh Najmi, 2008-11-12 22:52

Subject: Re: Why is TreeWalk.forPath(...) returning null
Message-ID: <491B5E46.6000706@wellfleetsoftware.com>
URL: https://gitlist.dev/e/491B5E46.6000706%40wellfleetsoftware.com
In-Reply-To: <20081112224236.GX2932@spearce.org>

```
Shawn O. Pearce wrote:
> Farrukh Najmi <farrukh@wellfleetsoftware.com> wrote:
>   
>> 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.
>
>   

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

```
