diff options
| author | Junio C Hamano <gitster@pobox.com> | 2025-11-08 10:33:21 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-11-08 10:33:21 -0800 |
| commit | 77c26cef25dda1f4aa1743e5b08063e711c83d10 (patch) | |
| tree | 7c09a577696cdc4a51cdd490607a9c8c04416621 /packfile.c | |
| parent | Merge branch 'bc/sha1-256-interop-02' into seen (diff) | |
| parent | object-file: refactor writing objects via a stream (diff) | |
| download | git-77c26cef25dda1f4aa1743e5b08063e711c83d10.tar.gz git-77c26cef25dda1f4aa1743e5b08063e711c83d10.zip | |
Merge branch 'ps/object-source-loose' into seen
A part of code paths that deals with loose objects has been cleaned
up.
* ps/object-source-loose:
object-file: refactor writing objects via a stream
object-file: rename `write_object_file()`
object-file: refactor freshening of objects
object-file: rename `has_loose_object()`
object-file: read objects via the loose object source
object-file: move loose object map into loose source
object-file: hide internals when we need to reprepare loose sources
object-file: move loose object cache into loose source
object-file: introduce `struct odb_source_loose`
object-file: move `fetch_if_missing`
odb: adjust naming to free object sources
odb: introduce `odb_source_new()`
odb: fix subtle logic to check whether an alternate is usable
Diffstat (limited to 'packfile.c')
| -rw-r--r-- | packfile.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/packfile.c b/packfile.c index 378b0b1920..9cc11b6dc5 100644 --- a/packfile.c +++ b/packfile.c @@ -900,6 +900,22 @@ struct packed_git *packfile_store_load_pack(struct packfile_store *store, return p; } +int packfile_store_freshen_object(struct packfile_store *store, + const struct object_id *oid) +{ + struct pack_entry e; + if (!find_pack_entry(store->odb->repo, oid, &e)) + return 0; + if (e.p->is_cruft) + return 0; + if (e.p->freshened) + return 1; + if (utime(e.p->pack_name, NULL)) + return 0; + e.p->freshened = 1; + return 1; +} + void (*report_garbage)(unsigned seen_bits, const char *path); static void report_helper(const struct string_list *list, |
