projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add functions git_config_set() and git_config_set_multivar()
[git.git]
/
pack-redundant.c
diff --git
a/pack-redundant.c
b/pack-redundant.c
index
3e3f33a
..
fb6cb48
100644
(file)
--- a/
pack-redundant.c
+++ b/
pack-redundant.c
@@
-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);
pl = pl->next;
}
cmp_two_packs(pl, subset);
pl = pl->next;
}
+}
- pl = altodb_packs;
- while (pl) {
- subset = local_packs;
- while (subset) {
- llist_sorted_difference_inplace(subset->unique_objects,
- pl->all_objects);
- subset = subset->next;
+void scan_alt_odb_packs()
+{
+ struct pack_list *local, *alt;
+
+ alt = altodb_packs;
+ while (alt) {
+ 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;
void *base;
size_t off;
void *base;
+ if (!p->pack_local && !(alt_odb || verbose))
+ return NULL;
+
l.pack = p;
llist_init(&l.all_objects);
l.pack = p;
llist_init(&l.all_objects);
@@
-532,14
+540,14
@@
struct pack_list * add_pack(struct packed_git *p)
base = (void *)p->index_base;
while (off <= p->index_size - 3 * 20) {
llist_insert_back(l.all_objects, base + off);
base = (void *)p->index_base;
while (off <= p->index_size - 3 * 20) {
llist_insert_back(l.all_objects, base + off);
- off
+=
24;
+ off
+=
24;
}
/* this list will be pruned in cmp_two_packs later */
l.unique_objects = llist_copy(l.all_objects);
if (p->pack_local)
return pack_list_insert(&local_packs, &l);
else
}
/* this list will be pruned in cmp_two_packs later */
l.unique_objects = llist_copy(l.all_objects);
if (p->pack_local)
return pack_list_insert(&local_packs, &l);
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)
die("Zero packs found!\n");
if (local_packs == NULL)
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) {
fprintf(stderr, "There are %lu packs available in alt-odbs.\n",
(unsigned long)pack_list_size(altodb_packs));
if (verbose) {
fprintf(stderr, "There are %lu packs available in alt-odbs.\n",
(unsigned long)pack_list_size(altodb_packs));