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:
Junio C Hamano 2015-07-09 14:31:43 -07:00
commit c07173f215
2 changed files with 7 additions and 1 deletions

View File

@ -3575,14 +3575,19 @@ int for_each_packed_object(each_packed_object_fn cb, void *data, unsigned flags)
{
struct packed_git *p;
int r = 0;
int pack_errors = 0;
prepare_packed_git();
for (p = packed_git; p; p = p->next) {
if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local)
continue;
if (open_pack_index(p)) {
pack_errors = 1;
continue;
}
r = for_each_object_in_pack(p, cb, data);
if (r)
break;
}
return r;
return r ? r : pack_errors;
}

View File

@ -218,6 +218,7 @@ test_expect_success 'gc: prune old objects after local clone' '
'
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.bar &&
: >.git/objects/pack/foo.keep &&