Subject: Re: Clone fails on a repo with too many heads/tags

From: Ivan Todoroski <[email-masked]>
Date: Mon, 19 Mar 2012 02:05:22 +0100

On 18.03.2012 20:07, Jeff King wrote:
> Nor would you want to have multiple invocations of fetch-pack, since
> that would mean multiple http requests and multiple pack responses
> (which could not delta between themselves).

Sure, but if fetch-pack is called with so many refs that it overflows 
the command line, it's looking at a lot of work ahead of it anyway, it's 
not going to be a fast operation. So the overhead of multiple HTTP 
requests and lack of delta compression between huge batches of refs 
wouldn't be all that significant in practice.

That said, I really like your temp file idea below. It's the best 
solution so far. Simple, efficient, non-intrusive.

> I think the only sane solution is to write the values to a temporary 
> file, and do something like:
> 
> git fetch-pack --stateless-rpc --refs-from=$tmpfile
> 
> Even if you put the tmpfile in $GIT_DIR, I don't think this should
> run afoul of any read-only repositories, since by definition you are 
> fetching into the repository (but you could also just put it in
> /tmp).

OK, if nobody beats me to it I will try to code this next weekend. Maybe 
sooner, but I don't usually have much free time over the week (day job, 
family, etc.).