aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-03-28 13:50:50 -0700
committerJunio C Hamano <gitster@pobox.com>2014-03-28 13:50:50 -0700
commite2450e1245cdbcb709e841069039077ab0a2a96a (patch)
treecc4f2578f77903501b017597162010b9ea6acd58
parentd393d140b5656e608b332c00ea3b14f9a060d604 (diff)
parent373c67da1df7fcd33593ca26e6d67f177152b21a (diff)
downloadgit-e2450e1245cdbcb709e841069039077ab0a2a96a.tar.gz
Merge branch 'jk/pack-bitmap'
Instead of dying when asked to (re)pack with the reachability bitmap when a bitmap cannot be built, just (re)pack without producing a bitmap in such a case, with a warning. * jk/pack-bitmap: pack-objects: turn off bitmaps when skipping objects
-rw-r--r--builtin/pack-objects.c12
-rwxr-xr-xt/t5310-pack-bitmaps.sh5
2 files changed, 15 insertions, 2 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 0ee5f1ff94..e3150d7d4e 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -995,6 +995,10 @@ static void create_object_entry(const unsigned char *sha1,
entry->no_try_delta = no_try_delta;
}
+static const char no_closure_warning[] = N_(
+"disabling bitmap writing, as some objects are not being packed"
+);
+
static int add_object_entry(const unsigned char *sha1, enum object_type type,
const char *name, int exclude)
{
@@ -1005,8 +1009,14 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type,
if (have_duplicate_entry(sha1, exclude, &index_pos))
return 0;
- if (!want_object_in_pack(sha1, exclude, &found_pack, &found_offset))
+ if (!want_object_in_pack(sha1, exclude, &found_pack, &found_offset)) {
+ /* The pack is missing an object, so it will not have closure */
+ if (write_bitmap_index) {
+ warning(_(no_closure_warning));
+ write_bitmap_index = 0;
+ }
return 0;
+ }
create_object_entry(sha1, type, pack_name_hash(name),
exclude, name && no_try_delta(name),
diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh
index d3a3afaba8..f13525caa3 100755
--- a/t/t5310-pack-bitmaps.sh
+++ b/t/t5310-pack-bitmaps.sh
@@ -91,7 +91,10 @@ test_expect_success 'fetch (partial bitmap)' '
test_expect_success 'incremental repack cannot create bitmaps' '
test_commit more-1 &&
- test_must_fail git repack -d
+ find .git/objects/pack -name "*.bitmap" >expect &&
+ git repack -d &&
+ find .git/objects/pack -name "*.bitmap" >actual &&
+ test_cmp expect actual
'
test_expect_success 'incremental repack can disable bitmaps' '