summaryrefslogtreecommitdiff
path: root/pack-bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'pack-bitmap.c')
-rw-r--r--pack-bitmap.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/pack-bitmap.c b/pack-bitmap.c
index 39bcc16846..18f8b22aeb 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -9,6 +9,9 @@
#include "pack-bitmap.h"
#include "pack-revindex.h"
#include "pack-objects.h"
+#include "packfile.h"
+#include "repository.h"
+#include "object-store.h"
/*
* An entry on the bitmap index, representing the bitmap for a given
@@ -117,7 +120,7 @@ static struct ewah_bitmap *read_bitmap_1(struct bitmap_index *index)
{
struct ewah_bitmap *b = ewah_pool_new();
- int bitmap_size = ewah_read_mmap(b,
+ ssize_t bitmap_size = ewah_read_mmap(b,
index->map + index->map_pos,
index->map_size - index->map_pos);
@@ -252,7 +255,7 @@ static char *pack_bitmap_filename(struct packed_git *p)
size_t len;
if (!strip_suffix(p->pack_name, ".pack", &len))
- die("BUG: pack_name does not end in .pack");
+ BUG("pack_name does not end in .pack");
return xstrfmt("%.*s.bitmap", (int)len, p->pack_name);
}
@@ -333,8 +336,7 @@ static int open_pack_bitmap(void)
assert(!bitmap_git.map && !bitmap_git.loaded);
- prepare_packed_git();
- for (p = packed_git; p; p = p->next) {
+ for (p = get_packed_git(the_repository); p; p = p->next) {
if (open_pack_bitmap_1(p) == 0)
ret = 0;
}
@@ -586,7 +588,7 @@ static void show_extended_objects(struct bitmap *objects,
continue;
obj = eindex->objects[i];
- show_reach(obj->oid.hash, obj->type, 0, eindex->hashes[i], NULL, 0);
+ show_reach(&obj->oid, obj->type, 0, eindex->hashes[i], NULL, 0);
}
}
@@ -611,7 +613,7 @@ static void show_objects_for_type(
eword_t word = objects->words[i] & filter;
for (offset = 0; offset < BITS_IN_EWORD; ++offset) {
- const unsigned char *sha1;
+ struct object_id oid;
struct revindex_entry *entry;
uint32_t hash = 0;
@@ -624,12 +626,12 @@ static void show_objects_for_type(
continue;
entry = &bitmap_git.pack->revindex[pos + offset];
- sha1 = nth_packed_object_sha1(bitmap_git.pack, entry->nr);
+ nth_packed_object_oid(&oid, bitmap_git.pack, entry->nr);
if (bitmap_git.hashes)
- hash = ntohl(bitmap_git.hashes[entry->nr]);
+ hash = get_be32(bitmap_git.hashes + entry->nr);
- show_reach(sha1, object_type, 0, hash, bitmap_git.pack, entry->offset);
+ show_reach(&oid, object_type, 0, hash, bitmap_git.pack, entry->offset);
}
pos += BITS_IN_EWORD;
@@ -653,8 +655,6 @@ static int in_bitmapped_pack(struct object_list *roots)
int prepare_bitmap_walk(struct rev_info *revs)
{
unsigned int i;
- unsigned int pending_nr = revs->pending.nr;
- struct object_array_entry *pending_e = revs->pending.objects;
struct object_list *wants = NULL;
struct object_list *haves = NULL;
@@ -669,11 +669,11 @@ int prepare_bitmap_walk(struct rev_info *revs)
return -1;
}
- for (i = 0; i < pending_nr; ++i) {
- struct object *object = pending_e[i].item;
+ for (i = 0; i < revs->pending.nr; ++i) {
+ struct object *object = revs->pending.objects[i].item;
if (object->type == OBJ_NONE)
- parse_object_or_die(object->oid.hash, NULL);
+ parse_object_or_die(&object->oid, NULL);
while (object->type == OBJ_TAG) {
struct tag *tag = (struct tag *) object;
@@ -685,7 +685,7 @@ int prepare_bitmap_walk(struct rev_info *revs)
if (!tag->tagged)
die("bad tag");
- object = parse_object_or_die(tag->tagged->oid.hash, NULL);
+ object = parse_object_or_die(&tag->tagged->oid, NULL);
}
if (object->flags & UNINTERESTING)
@@ -714,9 +714,7 @@ int prepare_bitmap_walk(struct rev_info *revs)
if (!bitmap_git.loaded && load_pack_bitmap() < 0)
return -1;
- revs->pending.nr = 0;
- revs->pending.alloc = 0;
- revs->pending.objects = NULL;
+ object_array_clear(&revs->pending);
if (haves) {
revs->ignore_missing_links = 1;
@@ -725,13 +723,13 @@ int prepare_bitmap_walk(struct rev_info *revs)
revs->ignore_missing_links = 0;
if (haves_bitmap == NULL)
- die("BUG: failed to perform bitmap walk");
+ BUG("failed to perform bitmap walk");
}
wants_bitmap = find_objects(revs, wants, haves_bitmap);
if (!wants_bitmap)
- die("BUG: failed to perform bitmap walk");
+ BUG("failed to perform bitmap walk");
if (haves_bitmap)
bitmap_and_not(wants_bitmap, haves_bitmap);
@@ -1035,7 +1033,7 @@ int rebuild_existing_bitmaps(struct packing_data *mapping,
oe = packlist_find(mapping, sha1, NULL);
if (oe)
- reposition[i] = oe->in_pack_pos + 1;
+ reposition[i] = oe_in_pack_pos(mapping, oe) + 1;
}
rebuild = bitmap_new();