t0001-init.sh: use the $( ... ) construct for command substitution
[gitweb.git] / pack-bitmap.c
index 82090a67413ad7cc10bbcd37faf6ed549bfc8706..ae0b57b95011af835d3b47f253572e8c44f6482e 100644 (file)
@@ -66,6 +66,9 @@ static struct bitmap_index {
        /* Number of bitmapped commits */
        uint32_t entry_count;
 
+       /* Name-hash cache (or NULL if not present). */
+       uint32_t *hashes;
+
        /*
         * Extended index.
         *
@@ -152,6 +155,11 @@ static int load_bitmap_header(struct bitmap_index *index)
                if ((flags & BITMAP_OPT_FULL_DAG) == 0)
                        return error("Unsupported options for bitmap index file "
                                "(Git requires BITMAP_OPT_FULL_DAG)");
+
+               if (flags & BITMAP_OPT_HASH_CACHE) {
+                       unsigned char *end = index->map + index->map_size - 20;
+                       index->hashes = ((uint32_t *)end) - index->pack->num_objects;
+               }
        }
 
        index->entry_count = ntohl(header->entry_count);
@@ -626,6 +634,9 @@ static void show_objects_for_type(
                        entry = &bitmap_git.reverse_index->revindex[pos + offset];
                        sha1 = nth_packed_object_sha1(bitmap_git.pack, entry->nr);
 
+                       if (bitmap_git.hashes)
+                               hash = ntohl(bitmap_git.hashes[entry->nr]);
+
                        show_reach(sha1, object_type, 0, hash, bitmap_git.pack, entry->offset);
                }