On Wed, 27 May 2009, Linus Torvalds wrote: > Something like the following may also work, as a more generic "just don't > even bother trying to delta huge files". > > Totally untested. Maybe it works. Maybe it doesn't. > > Linus > > --- > Documentation/config.txt | 7 +++++++ > builtin-pack-objects.c | 9 +++++++++ > 2 files changed, 16 insertions(+), 0 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index 2c03162..8c21027 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -1238,6 +1238,13 @@ older version of git. If the `{asterisk}.pack` file is smaller than 2 GB, howeve > you can use linkgit:git-index-pack[1] on the *.pack file to regenerate > the `{asterisk}.idx` file. > > +pack.packDeltaLimit:: > + The default maximum size of objects that we try to delta. The option name feels a bit wrong here, like if it meant the max number of deltas in a pack. Nothing better comes to my mind at the moment though. > diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c > index 9742b45..9a0072b 100644 > --- a/builtin-pack-objects.c > +++ b/builtin-pack-objects.c > @@ -85,6 +85,7 @@ static struct progress *progress_state; > static int pack_compression_level = Z_DEFAULT_COMPRESSION; > static int pack_compression_seen; > > +static unsigned long pack_delta_limit = 64*1024*1024; > static unsigned long delta_cache_size = 0; > static unsigned long max_delta_cache_size = 0; > static unsigned long cache_max_small_delta_size = 1000; > @@ -1270,6 +1271,10 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, > if (trg_entry->type != src_entry->type) > return -1; > > + /* If we limit delta generation, don't even bother for larger blobs */ > + if (pack_delta_limit && trg_entry->size >= pack_delta_limit) > + return -1; I'd suggest filtering delta candidates out of delta_list up front in prepare_pack() instead. 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