Re: [BUG?] fetch into shallow sends a large number of objects
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Mar 8, 2016, 12:33 UTC
- Message-ID
- <CACsJy8Dk_g1O98UsDaeVS3VXmE2Mn5aR+w1OiFir+QwyJYLVZQ@mail.gmail.com>
- In-Reply-To
- <20160308121444.GA18535@sigill.intra.peff.net>
On Tue, Mar 8, 2016 at 7:14 PM, Jeff King <peff@peff.net> wrote:
Show 8 quoted lines
> ... > > So I think the solution to both is that we need to do a _separate_ > traversal with all of the positive tips we're going to send, and the > parents of any shallow commits the client has, to find their fork points > (i.e., merge bases). And then we add those fork points to the shallow > list (grafting out their parents), and communicate them to the client to > add to its shallow setup.
Good news. We have the mechanism in place, I think. get_shallow_commits_by_rev_list() (from 'pu') will produce the right shallow points for sending back to the client if you pass "--not <current shallow points>" to it. It's meant to be used for --shallow-exclude and --shallow-since, but if neither is given (nor --depth) I guess we can run it with current shallow points. I wonder if we can detect some common cases and avoid commit traversing this way though.
-- Duy