diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-06-22 14:54:15 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-22 14:54:15 -0700 |
commit | b4d6280e2fa151e46a89851af9ddae5482d56a4d (patch) | |
tree | d513dc74980423116abb2b6b21cfb5e003284779 | |
parent | 67f0b6f3b2226ea858c616028375dcc3c46ccc37 (diff) | |
parent | f813e9ea5f776ff82a4462c5e9405f2e904254f4 (diff) | |
download | git-b4d6280e2fa151e46a89851af9ddae5482d56a4d.tar.gz git-b4d6280e2fa151e46a89851af9ddae5482d56a4d.tar.xz |
Merge branch 'jk/maint-for-each-packed-object' into jk/cat-file-batch-all
* jk/maint-for-each-packed-object:
for_each_packed_object: automatically open pack index
-rw-r--r-- | sha1_file.c | 7 | ||||
-rwxr-xr-x | t/t5304-prune.sh | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c index 7e38148fe..d0b26a056 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -3566,14 +3566,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; } diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh index 0794d33da..023d7c6f7 100755 --- a/t/t5304-prune.sh +++ b/t/t5304-prune.sh @@ -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 && |