Merge branch 'jk/maint-for-each-packed-object'
The for_each_packed_object() API function did not iterate over objects in a packfile that hasn't been used yet. * jk/maint-for-each-packed-object: for_each_packed_object: automatically open pack index
This commit is contained in:
commit
c07173f215
@ -3575,14 +3575,19 @@ int for_each_packed_object(each_packed_object_fn cb, void *data, unsigned flags)
|
|||||||
{
|
{
|
||||||
struct packed_git *p;
|
struct packed_git *p;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
int pack_errors = 0;
|
||||||
|
|
||||||
prepare_packed_git();
|
prepare_packed_git();
|
||||||
for (p = packed_git; p; p = p->next) {
|
for (p = packed_git; p; p = p->next) {
|
||||||
if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local)
|
if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local)
|
||||||
continue;
|
continue;
|
||||||
|
if (open_pack_index(p)) {
|
||||||
|
pack_errors = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
r = for_each_object_in_pack(p, cb, data);
|
r = for_each_object_in_pack(p, cb, data);
|
||||||
if (r)
|
if (r)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return r;
|
return r ? r : pack_errors;
|
||||||
}
|
}
|
||||||
|
@ -218,6 +218,7 @@ test_expect_success 'gc: prune old objects after local clone' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'garbage report in count-objects -v' '
|
test_expect_success 'garbage report in count-objects -v' '
|
||||||
|
test_when_finished "rm -f .git/objects/pack/fake*" &&
|
||||||
: >.git/objects/pack/foo &&
|
: >.git/objects/pack/foo &&
|
||||||
: >.git/objects/pack/foo.bar &&
|
: >.git/objects/pack/foo.bar &&
|
||||||
: >.git/objects/pack/foo.keep &&
|
: >.git/objects/pack/foo.keep &&
|
||||||
|
Loading…
Reference in New Issue
Block a user