aboutsummaryrefslogtreecommitdiffstats
path: root/packfile.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-11-08 10:33:21 -0800
committerJunio C Hamano <gitster@pobox.com>2025-11-08 10:33:21 -0800
commit77c26cef25dda1f4aa1743e5b08063e711c83d10 (patch)
tree7c09a577696cdc4a51cdd490607a9c8c04416621 /packfile.c
parentMerge branch 'bc/sha1-256-interop-02' into seen (diff)
parentobject-file: refactor writing objects via a stream (diff)
downloadgit-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.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,