Re: [PATCH v3] rev-list: exclude promisor objects at walk time
- Date: Fri, 12 Apr 2019 15:38:47 -0700
- From: Josh Steadmon <steadmon@xxxxxxxxxx>
- Subject: Re: [PATCH v3] rev-list: exclude promisor objects at walk time
On 2019.04.11 00:06, Jeff King wrote:
> On Tue, Apr 09, 2019 at 04:42:55PM -0700, Josh Steadmon wrote:
> > > warning: reflog of 'HEAD' references pruned commits
> > > warning: reflog of 'refs/heads/master' references pruned commits
> > > fatal: unable to read 71905dfcd543b7cbb0b4b66fbd20379e67220557
> > > error: last command exited with $?=128
> > > not ok 23 - repack -d does not irreversibly delete promisor objects
> > >
> > Thank you for catching this. I haven't yet figured out the cause. I will
> > look into this more tomorrow and then send a V4 once I've fixed it.
> I'm concerned that this is a sign that the approach I suggested does not
> actually work everywhere. I.e., could this be a case where we have some
> non-promisor object that points to a sub-object that is reachable from
> the promisor pack, but not a direct tip? Before your patch we'd consider
> that sub-object a promisor (because we enumerate all of the graph that
> we do have and mark each such object), but afterwards we would not.
> And I wonder if that confuses pack-objects. Though I think it would
> confuse it in the _opposite_ direction. I.e., using
> --exclude-promisor-objects would count such an object as not-a-promisor
> and would be more inclined to include it in the new pack.
> It is curious that this only turns up with GIT_TEST_COMMIT_GRAPH=1, too.
> It seems like any such problem ought to be independent of that.
Do you think this justifies going back to the V1 approach (only checking
presence of objects pointed to by refs when doing a partial clone)?