On Sun, Jul 22, 2018 at 7:52 AM Christian Couder
<[email protected]> wrote:
> @@ -700,51 +705,58 @@ static struct object_entry **compute_write_order(void)
> */
> for_each_tag_ref(mark_tagged, NULL);
>
> - /*
> - * Give the objects in the original recency order until
> - * we see a tagged tip.
> - */
> + if (use_delta_islands)
> + max_layers = compute_pack_layers(&to_pack);
> +
> ALLOC_ARRAY(wo, to_pack.nr_objects);
> - for (i = wo_end = 0; i < to_pack.nr_objects; i++) {
> - if (objects[i].tagged)
> - break;
> - add_to_write_order(wo, &wo_end, &objects[i]);
> - }
> - last_untagged = i;
> + wo_end = 0;
>
> - /*
> - * Then fill all the tagged tips.
> - */
> - for (; i < to_pack.nr_objects; i++) {
> - if (objects[i].tagged)
> + for (; write_layer < max_layers; ++write_layer) {
> + /*
> + * Give the objects in the original recency order until
> + * we see a tagged tip.
> + */
> + for (i = 0; i < to_pack.nr_objects; i++) {
> + if (objects[i].tagged)
> + break;
> add_to_write_order(wo, &wo_end, &objects[i]);
> - }
> + }
> + last_untagged = i;
>
> - /*
> - * And then all remaining commits and tags.
> - */
> - for (i = last_untagged; i < to_pack.nr_objects; i++) {
> - if (oe_type(&objects[i]) != OBJ_COMMIT &&
> - oe_type(&objects[i]) != OBJ_TAG)
> - continue;
> - add_to_write_order(wo, &wo_end, &objects[i]);
> - }
> + /*
> + * Then fill all the tagged tips.
> + */
If we move the code in this loop to a separate function, in a separate
patch, first, would it produce a better diff? I think all the
indentation change here makes it a bit hard to read.
> + for (; i < to_pack.nr_objects; i++) {
> + if (objects[i].tagged)
> + add_to_write_order(wo, &wo_end, &objects[i]);
> + }
--
Duy