summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 55ced83)
raw | patch | inline | side by side (parent: 55ced83)
author | Nicolas Pitre <nico@cam.org> | |
Thu, 30 Aug 2007 01:17:17 +0000 (21:17 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 31 Aug 2007 02:18:31 +0000 (19:18 -0700) |
The code favoring shallower deltas when size is equal was triggered
only when previous delta was also cached. There should be no relation
between cached deltas and same sized deltas.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
only when previous delta was also cached. There should be no relation
between cached deltas and same sized deltas.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c | patch | blob | history |
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 9b3ef94c4cea6eba9d79feb5c6647deb2e149daa..12509faa777bb2903e98c79a98be151380911b87 100644 (file)
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
if (!delta_buf)
return 0;
- if (trg_entry->delta_data) {
+ if (trg_entry->delta) {
/* Prefer only shallower same-sized deltas. */
if (delta_size == trg_entry->delta_size &&
src->depth + 1 >= trg->depth) {
free(delta_buf);
return 0;
}
- delta_cache_size -= trg_entry->delta_size;
- free(trg_entry->delta_data);
- trg_entry->delta_data = NULL;
}
+
trg_entry->delta = src_entry;
trg_entry->delta_size = delta_size;
trg->depth = src->depth + 1;
+ if (trg_entry->delta_data) {
+ delta_cache_size -= trg_entry->delta_size;
+ free(trg_entry->delta_data);
+ trg_entry->delta_data = NULL;
+ }
+
if (delta_cacheable(src_size, trg_size, delta_size)) {
trg_entry->delta_data = xrealloc(delta_buf, delta_size);
delta_cache_size += trg_entry->delta_size;