From: Junio C Hamano Date: Wed, 16 Nov 2005 20:35:05 GMT Subject: Re: [QUESTION] Access to a huge GIT repository. Message-ID: <7vwtj85o1y.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <46a038f90511161201h54c5fa73l20b5dcf3b5c19399@mail.gmail.com> Martin Langhoff writes: > On 11/17/05, Junio C Hamano wrote: >> The underlying network transfer program, 'git-clone-pack', can >> be told to clone only specified branches. If somebody is >> interested, updating the 'git-clone' wrapper to use it should >> not be too hard -- obviously this needs to be done for other >> transports as well, though. > > cg-clone already does this. Yes, but it can be improved. It does fetch-pack for git native transports, which means the receiving end expands the pack. I think we would either need to teach cg-clone to tell cg-fetch that it is cloning and invoke git-clone-pack, or add an optional "do not expand" option to git-fetch-pack (git-clone-pack always keeps the downloaded pack unexpanded). Huge pack transfer spends long time on the downloader side unpacking the pack. > If you just pull tagrefs and all the objects needed for them, chances > are you'll get the whole repo anyway ;-) Yes, that's why we changed ls-remote to report the magic ^{} entries and it is used in cg-fetch::fetch_tags.