diff options
author | Linus Torvalds <torvalds@osdl.org> | 2006-06-29 14:04:01 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-06-29 15:24:29 -0700 |
commit | 51d1e83f91a16363930023a5c39f79f270c04653 (patch) | |
tree | b828fd13144d10026feeafe14840411386eaa26e | |
parent | 75dedd5a21246be03ae443e9fc6a9f75c6d2995b (diff) | |
download | git-51d1e83f91a16363930023a5c39f79f270c04653.tar.gz |
Do not try futile object pairs when repacking.
In the repacking window, if both objects we are looking at already came
from the same (old) pack-file, don't bother delta'ing them against each
other.
That means that we'll still always check for better deltas for (and
against!) _unpacked_ objects, but assuming incremental repacks, you'll
avoid the delta creation 99% of the time.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | pack-objects.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pack-objects.c b/pack-objects.c index bed2497b79..6e1767652c 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -988,6 +988,13 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, return -1; /* + * We do not bother to try a delta that we discarded + * on an earlier try. + */ + if (trg_entry->in_pack && trg_entry->in_pack == src_entry->in_pack) + return 0; + + /* * If the current object is at pack edge, take the depth the * objects that depend on the current object into account -- * otherwise they would become too deep. |