On Tue, Jul 17, 2018 at 9:41 PM Jeff King <peff@xxxxxxxx> wrote: > I slept on this to see if I could brainstorm any other ways. > > .. > > Sort of an aside to the patch under discussion, but I think it may make > sense for prune_shallow() to take a callback function for determining > whether a commit is reachable. > > I have an old patch that teaches git-prune to lazily do the reachability > check, since in many cases "git repack" will have just packed all of the > loose objects. But it just occurred to me that this patch is totally > broken with respect to prune_shallow(), because it would not set the > SEEN flag (I've literally been running with it for years, which goes to > show how often I use the shallow feature). > > And if we were to have repack do a prune_shallow(), it may want to use a > different method than traversing and marking each object SEEN. All of this sounds good. The only thing I'd like to do a bit differently is to pass the reachable commits in prune_shallow() as a commit-slab instead of taking a callback function. I'll refactor this code, move prune_shallow() to a separate command prune-shallow and do the locking thing. Johannes I could take over this bug too (since I introduced the shallow pruning and missed this part) if you are busy, but if you want it to be done fast, I can't help. I still have a list of things to go through. -- Duy