diff options
| author | Patrick Steinhardt <ps@pks.im> | 2025-09-23 12:17:10 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-09-24 11:53:50 -0700 |
| commit | d67530f6bbe56f1951b8fd2fcdaae255bf552e2d (patch) | |
| tree | 1f26edfb6f83c3b97496ab46f4a025a69c4fc089 /packfile.h | |
| parent | f6f236d926915411eca28cb1c47619fdacf6eafb (diff) | |
packfile: introduce function to load and add packfiles
We have a recurring pattern where we essentially perform an upsert of a
packfile in case it isn't yet known by the packfile store. The logic to
do so is non-trivial as we have to reconstruct the packfile's key, check
the map of packfiles, then create the new packfile and finally add it to
the store.
Introduce a new function that does this dance for us. Refactor callsites
to use it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'packfile.h')
| -rw-r--r-- | packfile.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/packfile.h b/packfile.h index ba4b0cef9c..fcefcbbef6 100644 --- a/packfile.h +++ b/packfile.h @@ -127,6 +127,14 @@ void packfile_store_reprepare(struct packfile_store *store); void packfile_store_add_pack(struct packfile_store *store, struct packed_git *pack); +/* + * Open the packfile and add it to the store if it isn't yet known. Returns + * either the newly opened packfile or the preexisting packfile. Returns a + * `NULL` pointer in case the packfile could not be opened. + */ +struct packed_git *packfile_store_load_pack(struct packfile_store *store, + const char *idx_path, int local); + struct pack_window { struct pack_window *next; unsigned char *base; |
