threads / discuss / 26626

problem with updating a shallow clone via a branch fetch

Subject: problem with updating a shallow clone via a branch fetch

## tl;dr

4 messages between Mar 1, 2011 and Jan 13, 2012.

replies: 3people: 3as markdown or json

Rick Bradley· Mar 1, 2011, 00:12 UTC · lore
So I have a git repo that is shallow cloned:
  % git clone --depth 1 <repo url>

Sometimes (very rarely), when I do a branch fetch to update that repository I get an error:

 % git fetch origin +refs/head/<branch>:refs/remotes/origin/<branch>
fatal: did not find object for shallow <hash>

There are only 3 mentions of this error on google, none of which are enlightening. The error is being emitted by receive_need(void) in upload-pack.c. The commit in question exists in the named branch in the upstream repository, and I'm not aware that anything sketchy (forced pushes, etc.) has gone on. I'm going to continue to research the history of the repo and the deployment, but I can't seem to get any insight on what the error actually means (i.e., what conditions would cause this error to be triggered).

Any help is appreciated, Rick

Junio C Hamano· Mar 1, 2011, 00:25 UTC · re: Rick Bradley · lore

Re: problem with updating a shallow clone via a branch fetch

Rick Bradley <rick@rickbradley.com> writes:
Show 10 quoted lines
> So I have a git repo that is shallow cloned:
>
>   % git clone --depth 1 <repo url>
>
> Sometimes (very rarely), when I do a branch fetch to update that
> repository I get an error:
>
>  % git fetch origin +refs/head/<branch>:refs/remotes/origin/<branch>
>
> fatal: did not find object for shallow <hash>

The message comes from the repository you are fetching from. When you fetch from a shallow clone, the fetch process on your end tells the other side what commits your incomplete history ends at, and if the other end does not have any of these commits, you get that message. So the only case (unless there is a bug---and I don't think this codepath is heavily exercised so it is very possible there are bugs) you would see that message is if the other side rewound the branch and then later garbage collection lost the commit.

Rick Bradley· Mar 1, 2011, 02:07 UTC · re: Junio C Hamano · lore

Re: problem with updating a shallow clone via a branch fetch

Junio, Thanks for the assistance. I'll be looking in the direction of what could have caused sanity problems in the upstream repo. If it happens again and we can collect more tea leaves (this checkout was cleaned up before I could get a copy of it to do further diagnosis :-/) I'll see what else we can find out.

Rick
On Mon, Feb 28, 2011 at 6:25 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 22 quoted lines
> Rick Bradley <rick@rickbradley.com> writes:
>
>> So I have a git repo that is shallow cloned:
>>
>>   % git clone --depth 1 <repo url>
>>
>> Sometimes (very rarely), when I do a branch fetch to update that
>> repository I get an error:
>>
>>  % git fetch origin +refs/head/<branch>:refs/remotes/origin/<branch>
>>
>> fatal: did not find object for shallow <hash>
>
> The message comes from the repository you are fetching from.  When you
> fetch from a shallow clone, the fetch process on your end tells the other
> side what commits your incomplete history ends at, and if the other end
> does not have any of these commits, you get that message.  So the only
> case (unless there is a bug---and I don't think this codepath is heavily
> exercised so it is very possible there are bugs) you would see that
> message is if the other side rewound the branch and then later garbage
> collection lost the commit.
>

← back to recent threads