summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-06-22 14:54:15 -0700
committerJunio C Hamano <gitster@pobox.com>2015-06-22 14:54:15 -0700
commitb4d6280e2fa151e46a89851af9ddae5482d56a4d (patch)
treed513dc74980423116abb2b6b21cfb5e003284779
parent67f0b6f3b2226ea858c616028375dcc3c46ccc37 (diff)
parentf813e9ea5f776ff82a4462c5e9405f2e904254f4 (diff)
downloadgit-b4d6280e2fa151e46a89851af9ddae5482d56a4d.tar.gz
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.c7
-rwxr-xr-xt/t5304-prune.sh1
2 files changed, 7 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c
index 7e38148fe5..d0b26a0565 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 0794d33dad..023d7c6f7b 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 &&