Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > As for whether we should do it in the first place, I think that having 2 > orthogonal flags is clearer than having 1 that controls fetch > (SKIP_FETCH) and 1 that does both (QUICK) without any that recheck > packed, but I'm quite familiar with this part of the code, so perhaps > I'm the wrong person to ask - we should optimize for the typical Git > developer who just wants to access the object store. Judging from the > frequency in which we encounter this issue (as Peff says), maybe we > should go ahead and make QUICK imply SKIP_FETCH but not the other way > around. Thanks for thinking this through. I am OK with that direction. > (It is also possible just to make both imply the other and unify > QUICK and SKIP_FETCH into one flag - I am not opposed to that - > although read my email that Peff linked to see why bidirectional > implication is correct in one sense but incorrect in another.) Yup, also from the old message: > Having said that, perhaps we should consider promisor-remote.c as > low-level code and expect it to know that objects are fetched into a > packfile (as opposed to loose objects), so it can safely use QUICK > (which is documented as checking packed after packed and loose). If no > one disagrees, I can make such a patch after jt/push-avoid-lazy-fetch is > merged to master (as is the plan, according to What's Cooking [1]). I agree that it makes sense to treat promisor-remote.c as the low-level implementation detail that is allowed to be intimately familiar with how its behaviour would interact with QUICK and SKIP_FETCH options. Thanks.