Code

make 'git clone' ask the remote only for objects it cares about
authorNicolas Pitre <nico@fluxnic.net>
Sat, 26 Sep 2009 03:54:42 +0000 (23:54 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 26 Sep 2009 19:51:04 +0000 (12:51 -0700)
commit5bdc32d3e50d8335c65e136e6b5234c5dd92a7a9
tree52f428f14b58a13fc56a6093c5d0fd6b63131ec4
parentfb3650ed100a549f80d822f28ccf0f82e9f75f3e
make 'git clone' ask the remote only for objects it cares about

Current behavior of 'git clone' when not using --mirror is to fetch
everything from the peer, and then filter out unwanted refs just before
writing them out to the cloned repository.  This may become highly
inefficient if the peer has an unusual ref namespace, or if it simply
has "remotes" refs of its own, and those locally unwanted refs are
connecting to a large set of objects which becomes unreferenced as soon
as they are fetched.

Let's filter out those unwanted refs from the peer _before_ asking it
what refs we want to fetch instead, which is the most logical thing to
do anyway.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
builtin-clone.c