Merge branch 'maint-1.7.6' into maint-1.7.7

* maint-1.7.6:
  Update draft release notes to 1.7.6.6
  thin-pack: try harder to use preferred base objects as base
This commit is contained in:
Junio C Hamano 2012-01-12 23:31:05 -08:00
commit 901c907d83
2 changed files with 12 additions and 2 deletions

View File

@ -8,4 +8,9 @@ Fixes since v1.7.6.5
directory when two paths in question are in adjacent directories and directory when two paths in question are in adjacent directories and
the name of the one directory is a prefix of the other. the name of the one directory is a prefix of the other.
* When producing a "thin pack" (primarily used in bundles and smart
HTTP transfers) out of a fully packed repository, we unnecessarily
avoided sending recent objects as a delta against objects we know
the other side has.
Also contains minor fixes and documentation updates. Also contains minor fixes and documentation updates.

View File

@ -1421,11 +1421,16 @@ static int try_delta(struct unpacked *trg, struct unpacked *src,
return -1; return -1;
/* /*
* We do not bother to try a delta that we discarded * We do not bother to try a delta that we discarded on an
* on an earlier try, but only when reusing delta data. * earlier try, but only when reusing delta data. Note that
* src_entry that is marked as the preferred_base should always
* be considered, as even if we produce a suboptimal delta against
* it, we will still save the transfer cost, as we already know
* the other side has it and we won't send src_entry at all.
*/ */
if (reuse_delta && trg_entry->in_pack && if (reuse_delta && trg_entry->in_pack &&
trg_entry->in_pack == src_entry->in_pack && trg_entry->in_pack == src_entry->in_pack &&
!src_entry->preferred_base &&
trg_entry->in_pack_type != OBJ_REF_DELTA && trg_entry->in_pack_type != OBJ_REF_DELTA &&
trg_entry->in_pack_type != OBJ_OFS_DELTA) trg_entry->in_pack_type != OBJ_OFS_DELTA)
return 0; return 0;