summaryrefslogtreecommitdiff
path: root/packfile.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-11-24 15:46:41 -0800
committerJunio C Hamano <gitster@pobox.com>2025-11-24 15:46:41 -0800
commita545103244a712fd6a96dd2020fe91c0c8f6fdce (patch)
tree89589f27eecd38c60e27608e2ac087c049210cc3 /packfile.c
parent05ce3ab2c6898c7694a5cc198f8b3fd931611578 (diff)
parent3e5e360888316ed1a44da69bf134bb6ec70aee1b (diff)
downloadgit-a545103244a712fd6a96dd2020fe91c0c8f6fdce.tar.xz
Merge branch 'ps/object-source-loose'
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.c16
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,