On Wed, 7 Apr 2010, Marat Radchenko wrote: > Nicolas Pitre <nico <at> fluxnic.net> writes: > > The "Resolving deltas" is performed locally, when Git is actually > > expanding all the deltas in the received pack to find the actual SHA1 of > > the resulting object in order to create the pack index. > Is there any technical limitation why it cannot be done simultaniously with > fetch (piped or whatever), instead of a separate step after fetch? The non delta compressed objects are indexed simultaneously as they're received on the wire. However this is way suboptimal to do that for delta objects because 1) The base object needed to resolve a given delta object might not have been received yet. This means in this case that the delta will have to be resolved later anyway, and finding out if a just received object might be a base object for previously received objects is rather costly, and even impossible if that potential base object is itself a delta. So it is best to figure out the delta dependencies only once at the end of the transfer. 2) When resolving deep delta chains, it is best to start from the root i.e. create the result from a delta object and resolve all deltas with this result for base recursively, not to expand deltas repeatedly which would turn this process into exponential CPU usage. Again this can be done only when all delta objects have been received. Nicolas -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html