diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-04-28 02:00:59 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-04-28 02:00:59 +0300 |
commit | 849c8b3dbf8e850020951e81a42df4dc0b1e5b5d (patch) | |
tree | 5b0187c4a8a834b0afb5674e5f623af7f8b2ca2c /pack-revindex.c | |
parent | 2807bd2c10606e590886543afe4e4f208dddd489 (diff) | |
parent | 9f7f10a282d8adeb9da0990aa0eb2adf93a47ca7 (diff) |
Merge branch 'tb/pack-revindex-on-disk'
The on-disk reverse index that allows mapping from the pack offset
to the object name for the object stored at the offset has been
enabled by default.
* tb/pack-revindex-on-disk:
t: invert `GIT_TEST_WRITE_REV_INDEX`
config: enable `pack.writeReverseIndex` by default
pack-revindex: introduce `pack.readReverseIndex`
pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
pack-revindex: make `load_pack_revindex` take a repository
t5325: mark as leak-free
pack-write.c: plug a leak in stage_tmp_packfiles()
Diffstat (limited to 'pack-revindex.c')
-rw-r--r-- | pack-revindex.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/pack-revindex.c b/pack-revindex.c index 4d9bb41b4d..db282dac8d 100644 --- a/pack-revindex.c +++ b/pack-revindex.c @@ -207,6 +207,9 @@ static int load_revindex_from_disk(char *revindex_name, size_t revindex_size; struct revindex_header *hdr; + if (git_env_bool(GIT_TEST_REV_INDEX_DIE_ON_DISK, 0)) + die("dying as requested by '%s'", GIT_TEST_REV_INDEX_DIE_ON_DISK); + fd = git_open(revindex_name); if (fd < 0) { @@ -285,12 +288,15 @@ cleanup: return ret; } -int load_pack_revindex(struct packed_git *p) +int load_pack_revindex(struct repository *r, struct packed_git *p) { if (p->revindex || p->revindex_data) return 0; - if (!load_pack_revindex_from_disk(p)) + prepare_repo_settings(r); + + if (r->settings.pack_read_reverse_index && + !load_pack_revindex_from_disk(p)) return 0; else if (!create_pack_revindex_in_memory(p)) return 0; @@ -358,7 +364,7 @@ int offset_to_pack_pos(struct packed_git *p, off_t ofs, uint32_t *pos) { unsigned lo, hi; - if (load_pack_revindex(p) < 0) + if (load_pack_revindex(the_repository, p) < 0) return -1; lo = 0; |