On Thursday 24 November 2005 14:52, Nick Hengeveld wrote:
On Thu, Nov 24, 2005 at 10:37:15AM -0800, Linus Torvalds wrote:
I just repacked and updated it now, so how http should work too, although inefficiently (because it will get a whole new pack - just one of the disadvantages of the non-native protocols).
There's room to improve on that particular inefficiency. The http
commit walker could use Range: headers to fetch loose objects directly
from inside a pack if it didn't make sense to fetch the entire pack.
For this to work, pack fetches would need to be deferred until the
entire tree had been walked, and the commit walker could decide whether
to fetch the pack or loose objects based on the percentage of packed
objects it needed to fetch. It would also need to fetch all
tag/commit/tree objects using ranges to be able to fully walk the tree.
Alternately, when creating a new archive the client could ask the server
what protocols are active. It could then use the best one for the clone and
update the .git/origin files with the optimal one for incremental pulls.