mirror of
https://github.com/git/git.git
synced 2026-08-09 01:21:47 +00:00
odb/source-packed: wire up freshen_object() callback
Move `packfile_store_freshen_object()` and from "packfile.c" into "odb/source-packed.c" and wire it up as the `freshen_object()` callback of the "packed" source. Note that this removes the last external caller of `find_pack_entry()` from "packfile.c", which means that we can now make this function static. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
3c0f7b732e
commit
98189bdd0a
@@ -152,7 +152,7 @@ static int odb_source_files_freshen_object(struct odb_source *source,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
struct odb_source_files *files = odb_source_files_downcast(source);
|
||||
if (packfile_store_freshen_object(files->packed, oid) ||
|
||||
if (odb_source_freshen_object(&files->packed->base, oid) ||
|
||||
odb_source_freshen_object(&files->loose->base, oid))
|
||||
return 1;
|
||||
return 0;
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
#include "odb/streaming.h"
|
||||
#include "packfile.h"
|
||||
|
||||
int find_pack_entry(struct odb_source_packed *store,
|
||||
const struct object_id *oid,
|
||||
struct pack_entry *e)
|
||||
static int find_pack_entry(struct odb_source_packed *store,
|
||||
const struct object_id *oid,
|
||||
struct pack_entry *e)
|
||||
{
|
||||
struct packfile_list_entry *l;
|
||||
|
||||
@@ -482,6 +482,25 @@ static int odb_source_packed_find_abbrev_len(struct odb_source *source,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int odb_source_packed_freshen_object(struct odb_source *source,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
struct odb_source_packed *packed = odb_source_packed_downcast(source);
|
||||
struct pack_entry e;
|
||||
|
||||
if (!find_pack_entry(packed, 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,
|
||||
@@ -695,6 +714,7 @@ struct odb_source_packed *odb_source_packed_new(struct odb_source_files *parent)
|
||||
packed->base.for_each_object = odb_source_packed_for_each_object;
|
||||
packed->base.count_objects = odb_source_packed_count_objects;
|
||||
packed->base.find_abbrev_len = odb_source_packed_find_abbrev_len;
|
||||
packed->base.freshen_object = odb_source_packed_freshen_object;
|
||||
|
||||
if (!is_absolute_path(parent->base.path))
|
||||
chdir_notify_register(NULL, odb_source_packed_reparent, packed);
|
||||
|
||||
@@ -90,10 +90,4 @@ static inline struct odb_source_packed *odb_source_packed_downcast(struct odb_so
|
||||
*/
|
||||
void odb_source_packed_prepare(struct odb_source_packed *source);
|
||||
|
||||
struct pack_entry;
|
||||
|
||||
int find_pack_entry(struct odb_source_packed *store,
|
||||
const struct object_id *oid,
|
||||
struct pack_entry *e);
|
||||
|
||||
#endif
|
||||
|
||||
16
packfile.c
16
packfile.c
@@ -1892,22 +1892,6 @@ int packfile_fill_entry(struct packed_git *p,
|
||||
return 1;
|
||||
}
|
||||
|
||||
int packfile_store_freshen_object(struct odb_source_packed *store,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
struct pack_entry e;
|
||||
if (!find_pack_entry(store, 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;
|
||||
}
|
||||
|
||||
static void maybe_invalidate_kept_pack_cache(struct odb_source_packed *store,
|
||||
unsigned flags)
|
||||
{
|
||||
|
||||
@@ -132,9 +132,6 @@ static inline void repo_for_each_pack_data_next(struct repo_for_each_pack_data *
|
||||
struct packed_git *packfile_store_load_pack(struct odb_source_packed *store,
|
||||
const char *idx_path, int local);
|
||||
|
||||
int packfile_store_freshen_object(struct odb_source_packed *store,
|
||||
const struct object_id *oid);
|
||||
|
||||
enum kept_pack_type {
|
||||
KEPT_PACK_ON_DISK = (1 << 0),
|
||||
KEPT_PACK_IN_CORE = (1 << 1),
|
||||
|
||||
Reference in New Issue
Block a user