Re: Bug report: stash in upstream caused remote fetch to fail
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 6, 2014, 16:16 UTC
- Message-ID
- <xmqqbnzpkrvk.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20140106152742.GA26221@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 25 quoted lines
> On Fri, Jan 03, 2014 at 04:12:51PM -0500, Matt Burke wrote: > >> + git init -q >> + git fetch -q -fu ../../../other '+refs/*:refs/*' >> fatal: bad object 9b985fbe6a2b783c16756077a8be261c94b6c197 >> error: ../../../other did not send all necessary objects > > I was going to ask you to send your repository, but I can easily > reproduce here. I guess people don't run into it because it's uncommon > to fetch the whole refs/ namespace from a non-bare repo (and bare repos > do not tend to have stashes). Here's a minimal reproduction recipe: > > git init repo && > cd repo && > echo content >foo && > git add . && > git commit -m foo && > echo more >>foo && > git stash && > git init --bare sub && > cd sub && > git fetch .. 'refs/*:refs/*' > > It looks like we are not feeding refs/stash properly to pack-objects. > I'll try to take a closer look later today.
I looked at this in the past and I vaguely recall that we reject it in the for-each-ref loop with check-ref-format saying "eh, that is a single-level name".
At that point I stopped digging, thinking it was a feature ;-) based on your exact observation about stash vs bare/non-bare.