On Mon, 15 May 2006, Junio C Hamano wrote: > Nicolas Pitre <nico@xxxxxxx> writes: > > > @@ -1038,8 +1038,8 @@ static int try_delta(struct unpacked *tr > > > > /* Now some size filtering euristics. */ > > size = trg_entry->size; > > - max_size = size / 2 - 20; > > - if (trg_entry->delta) > > + max_size = (size/2 - 20) / (src_entry->depth + 1); > > + if (trg_entry->delta && trg_entry->delta_size <= max_size) > > max_size = trg_entry->delta_size-1; > > src_size = src_entry->size; > > sizediff = src_size < size ? size - src_size : 0; > > At the first glance, this seems rather too agressive. It makes > me wonder if it is a good balance to penalize the second > generation base by requiring it to produce a small delta that is > at most half as we normally would (and the third generation a > third), or maybe the penalty should kick in more gradually, like > e.g. ((max_depth * 2 - src_entry->depth) / (max_depth * 2). > > Having said that, judging from your past patches, I learned to > trust that you have tried tweaking this part and settled on this > simplicity and elegance, so I'll take the patch as is -- if > somebody wants to play with it that can always be done to > further improve things. Actually I didn't play with that part that much. The only thing I tried besides this version was (size - 20) / (src_entry->depth + 1) but it produced larger packs than the current version. So I thought it was better to provide a simple initial rule and leave possible improvements for later. Nicolas - : 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