pack-objects: extract should_attempt_deltas()
This will be helpful in a future change, which will reuse this logic. Signed-off-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
87a0bdbf0f
commit
4bc0ba0829
@@ -3196,6 +3196,36 @@ static int add_ref_tag(const char *tag UNUSED, const char *referent UNUSED, cons
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int should_attempt_deltas(struct object_entry *entry)
|
||||||
|
{
|
||||||
|
if (DELTA(entry))
|
||||||
|
/* This happens if we decided to reuse existing
|
||||||
|
* delta from a pack. "reuse_delta &&" is implied.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!entry->type_valid ||
|
||||||
|
oe_size_less_than(&to_pack, entry, 50))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (entry->no_try_delta)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!entry->preferred_base) {
|
||||||
|
if (oe_type(entry) < 0)
|
||||||
|
die(_("unable to get type of object %s"),
|
||||||
|
oid_to_hex(&entry->idx.oid));
|
||||||
|
} else if (oe_type(entry) < 0) {
|
||||||
|
/*
|
||||||
|
* This object is not found, but we
|
||||||
|
* don't have to include it anyway.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void prepare_pack(int window, int depth)
|
static void prepare_pack(int window, int depth)
|
||||||
{
|
{
|
||||||
struct object_entry **delta_list;
|
struct object_entry **delta_list;
|
||||||
@@ -3226,33 +3256,11 @@ static void prepare_pack(int window, int depth)
|
|||||||
for (i = 0; i < to_pack.nr_objects; i++) {
|
for (i = 0; i < to_pack.nr_objects; i++) {
|
||||||
struct object_entry *entry = to_pack.objects + i;
|
struct object_entry *entry = to_pack.objects + i;
|
||||||
|
|
||||||
if (DELTA(entry))
|
if (!should_attempt_deltas(entry))
|
||||||
/* This happens if we decided to reuse existing
|
|
||||||
* delta from a pack. "reuse_delta &&" is implied.
|
|
||||||
*/
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!entry->type_valid ||
|
if (!entry->preferred_base)
|
||||||
oe_size_less_than(&to_pack, entry, 50))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (entry->no_try_delta)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!entry->preferred_base) {
|
|
||||||
nr_deltas++;
|
nr_deltas++;
|
||||||
if (oe_type(entry) < 0)
|
|
||||||
die(_("unable to get type of object %s"),
|
|
||||||
oid_to_hex(&entry->idx.oid));
|
|
||||||
} else {
|
|
||||||
if (oe_type(entry) < 0) {
|
|
||||||
/*
|
|
||||||
* This object is not found, but we
|
|
||||||
* don't have to include it anyway.
|
|
||||||
*/
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delta_list[n++] = entry;
|
delta_list[n++] = entry;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user