Browse Source

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
maint
Junio C Hamano 11 years ago
parent
commit
e2450e1245
  1. 12
      builtin/pack-objects.c
  2. 5
      t/t5310-pack-bitmaps.sh

12
builtin/pack-objects.c

@ -995,6 +995,10 @@ static void create_object_entry(const unsigned char *sha1, @@ -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, @@ -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),

5
t/t5310-pack-bitmaps.sh

@ -91,7 +91,10 @@ test_expect_success 'fetch (partial bitmap)' ' @@ -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' '

Loading…
Cancel
Save