Improve the readability of git-pack-redundant
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
62af0b532b
commit
06a45c8cc9
@ -497,7 +497,7 @@ void load_all_objects()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* this scales like O(n^2) */
|
/* this scales like O(n^2) */
|
||||||
void cmp_packs()
|
void cmp_local_packs()
|
||||||
{
|
{
|
||||||
struct pack_list *subset, *pl = local_packs;
|
struct pack_list *subset, *pl = local_packs;
|
||||||
|
|
||||||
@ -506,16 +506,21 @@ void cmp_packs()
|
|||||||
cmp_two_packs(pl, subset);
|
cmp_two_packs(pl, subset);
|
||||||
pl = pl->next;
|
pl = pl->next;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pl = altodb_packs;
|
void scan_alt_odb_packs()
|
||||||
while (pl) {
|
{
|
||||||
subset = local_packs;
|
struct pack_list *local, *alt;
|
||||||
while (subset) {
|
|
||||||
llist_sorted_difference_inplace(subset->unique_objects,
|
alt = altodb_packs;
|
||||||
pl->all_objects);
|
while (alt) {
|
||||||
subset = subset->next;
|
local = local_packs;
|
||||||
|
while (local) {
|
||||||
|
llist_sorted_difference_inplace(local->unique_objects,
|
||||||
|
alt->all_objects);
|
||||||
|
local = local->next;
|
||||||
}
|
}
|
||||||
pl = pl->next;
|
alt = alt->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,6 +530,9 @@ struct pack_list * add_pack(struct packed_git *p)
|
|||||||
size_t off;
|
size_t off;
|
||||||
void *base;
|
void *base;
|
||||||
|
|
||||||
|
if (!p->pack_local && !(alt_odb || verbose))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
l.pack = p;
|
l.pack = p;
|
||||||
llist_init(&l.all_objects);
|
llist_init(&l.all_objects);
|
||||||
|
|
||||||
@ -532,14 +540,14 @@ struct pack_list * add_pack(struct packed_git *p)
|
|||||||
base = (void *)p->index_base;
|
base = (void *)p->index_base;
|
||||||
while (off <= p->index_size - 3 * 20) {
|
while (off <= p->index_size - 3 * 20) {
|
||||||
llist_insert_back(l.all_objects, base + off);
|
llist_insert_back(l.all_objects, base + off);
|
||||||
off+=24;
|
off += 24;
|
||||||
}
|
}
|
||||||
/* this list will be pruned in cmp_two_packs later */
|
/* this list will be pruned in cmp_two_packs later */
|
||||||
l.unique_objects = llist_copy(l.all_objects);
|
l.unique_objects = llist_copy(l.all_objects);
|
||||||
if (p->pack_local)
|
if (p->pack_local)
|
||||||
return pack_list_insert(&local_packs, &l);
|
return pack_list_insert(&local_packs, &l);
|
||||||
else
|
else
|
||||||
return alt_odb ? pack_list_insert(&altodb_packs, &l) : NULL;
|
return pack_list_insert(&altodb_packs, &l);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct pack_list * add_pack_file(char *filename)
|
struct pack_list * add_pack_file(char *filename)
|
||||||
@ -607,11 +615,14 @@ int main(int argc, char **argv)
|
|||||||
if (local_packs == NULL)
|
if (local_packs == NULL)
|
||||||
die("Zero packs found!\n");
|
die("Zero packs found!\n");
|
||||||
|
|
||||||
cmp_packs();
|
|
||||||
|
|
||||||
load_all_objects();
|
load_all_objects();
|
||||||
|
|
||||||
|
cmp_local_packs();
|
||||||
|
if (alt_odb)
|
||||||
|
scan_alt_odb_packs();
|
||||||
|
|
||||||
minimize(&min);
|
minimize(&min);
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
fprintf(stderr, "There are %lu packs available in alt-odbs.\n",
|
fprintf(stderr, "There are %lu packs available in alt-odbs.\n",
|
||||||
(unsigned long)pack_list_size(altodb_packs));
|
(unsigned long)pack_list_size(altodb_packs));
|
||||||
|
Loading…
Reference in New Issue
Block a user