diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-07-09 14:31:43 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-07-09 14:31:43 -0700 |
commit | c07173f2156cb81661f0a9c33b99d9378f3e104c (patch) | |
tree | af6ff089cac7784bd70bd5a7850467a77bd7318e /sha1_file.c | |
parent | Merge branch 'jc/fix-alloc-sortbuf-in-index-pack' (diff) | |
parent | for_each_packed_object: automatically open pack index (diff) | |
download | tgif-c07173f2156cb81661f0a9c33b99d9378f3e104c.tar.xz |
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
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c index 77cd81db31..c0205a0cb2 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -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; } |