Re: [PATCH 00/28] Create a reference backend for packed refs
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jun 22, 2017, 07:36 UTC
- Message-ID
- <05ea33a0-adde-54df-07e8-bdfba9c7d503@alum.mit.edu>
- In-Reply-To
- <20170619195330.fhjlfiqmcwhgttaa@sigill.intra.peff.net>
On 06/19/2017 09:53 PM, Jeff King wrote:
Show 17 quoted lines
> On Mon, Jun 19, 2017 at 03:43:15PM -0400, Jeff King wrote: > >>>> Is the iterator over packed-refs correctly skipping over what are >>>> covered by loose refs? The entries in the packed-refs file that are >>>> superseded by loose refs should be allowed to point at an already >>>> expired object. >>> >>> Here it is in a test form for easier diagnosis. >> >> Thanks, I was just starting to do that myself. The problem is in >> ca6b06eb7 (packed_ref_store: support iteration, 2017-05-15) and is >> pretty obvious: the packed_ref iterator checks whether the entry >> resolves. >> >> I think that _neither_ of the loose and packed iterators should be >> checking this. It's only the merged result (where loose trumps packed) >> that should bother checking.
Thanks for the bug report and the analysis, which is exactly right.
But I'd like to fix the problem a *little* differently than Peff suggested. To keep `packed_ref_store` from deviating more than necessary from the `ref_store` interface, I propose that we leave the code for rejecting broken refs where it is, and instead invoke `packed_ref_iterator_begin()` with the `DO_FOR_EACH_INCLUDE_BROKEN` flag.
I have prepared a re-roll of the patch series, but I can't submit it until I have Junio's signoff on the test that he suggested [1]. Junio?
Thanks, Michael
[1] http://public-inbox.org/git/xmqqvanrsru4.fsf@gitster.mtv.corp.google.com/