refs: prepare `refs_init_db()` for initializing worktree refs
The purpose of `refs_init_db()` is to initialize the on-disk files of a new ref database. The function is quite inflexible right now though, as callers can neither specify the `struct ref_store` nor can they pass any flags. Refactor the interface to accept both of these. This will be required so that we can start initializing per-worktree ref databases via the ref backend instead of open-coding the initialization in "worktree.c". Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
5bf20d6c77
commit
2e573d61ff
6
refs.c
6
refs.c
|
@ -1944,11 +1944,9 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* backend functions */
|
/* backend functions */
|
||||||
int refs_init_db(struct strbuf *err)
|
int refs_init_db(struct ref_store *refs, int flags, struct strbuf *err)
|
||||||
{
|
{
|
||||||
struct ref_store *refs = get_main_ref_store(the_repository);
|
return refs->be->init_db(refs, flags, err);
|
||||||
|
|
||||||
return refs->be->init_db(refs, err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
|
const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
|
||||||
|
|
2
refs.h
2
refs.h
|
@ -126,7 +126,7 @@ int should_autocreate_reflog(const char *refname);
|
||||||
|
|
||||||
int is_branch(const char *refname);
|
int is_branch(const char *refname);
|
||||||
|
|
||||||
int refs_init_db(struct strbuf *err);
|
int refs_init_db(struct ref_store *refs, int flags, struct strbuf *err);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the peeled value of the oid currently being iterated via
|
* Return the peeled value of the oid currently being iterated via
|
||||||
|
|
|
@ -33,10 +33,10 @@ struct ref_store *maybe_debug_wrap_ref_store(const char *gitdir, struct ref_stor
|
||||||
return (struct ref_store *)res;
|
return (struct ref_store *)res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int debug_init_db(struct ref_store *refs, struct strbuf *err)
|
static int debug_init_db(struct ref_store *refs, int flags, struct strbuf *err)
|
||||||
{
|
{
|
||||||
struct debug_ref_store *drefs = (struct debug_ref_store *)refs;
|
struct debug_ref_store *drefs = (struct debug_ref_store *)refs;
|
||||||
int res = drefs->refs->be->init_db(drefs->refs, err);
|
int res = drefs->refs->be->init_db(drefs->refs, flags, err);
|
||||||
trace_printf_key(&trace_refs, "init_db: %d\n", res);
|
trace_printf_key(&trace_refs, "init_db: %d\n", res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3220,7 +3220,9 @@ static int files_reflog_expire(struct ref_store *ref_store,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int files_init_db(struct ref_store *ref_store, struct strbuf *err UNUSED)
|
static int files_init_db(struct ref_store *ref_store,
|
||||||
|
int flags UNUSED,
|
||||||
|
struct strbuf *err UNUSED)
|
||||||
{
|
{
|
||||||
struct files_ref_store *refs =
|
struct files_ref_store *refs =
|
||||||
files_downcast(ref_store, REF_STORE_WRITE, "init_db");
|
files_downcast(ref_store, REF_STORE_WRITE, "init_db");
|
||||||
|
|
|
@ -1246,6 +1246,7 @@ static const char PACKED_REFS_HEADER[] =
|
||||||
"# pack-refs with: peeled fully-peeled sorted \n";
|
"# pack-refs with: peeled fully-peeled sorted \n";
|
||||||
|
|
||||||
static int packed_init_db(struct ref_store *ref_store UNUSED,
|
static int packed_init_db(struct ref_store *ref_store UNUSED,
|
||||||
|
int flags UNUSED,
|
||||||
struct strbuf *err UNUSED)
|
struct strbuf *err UNUSED)
|
||||||
{
|
{
|
||||||
/* Nothing to do. */
|
/* Nothing to do. */
|
||||||
|
|
|
@ -529,7 +529,9 @@ typedef struct ref_store *ref_store_init_fn(struct repository *repo,
|
||||||
const char *gitdir,
|
const char *gitdir,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
typedef int ref_init_db_fn(struct ref_store *refs, struct strbuf *err);
|
typedef int ref_init_db_fn(struct ref_store *refs,
|
||||||
|
int flags,
|
||||||
|
struct strbuf *err);
|
||||||
|
|
||||||
typedef int ref_transaction_prepare_fn(struct ref_store *refs,
|
typedef int ref_transaction_prepare_fn(struct ref_store *refs,
|
||||||
struct ref_transaction *transaction,
|
struct ref_transaction *transaction,
|
||||||
|
|
2
setup.c
2
setup.c
|
@ -1943,7 +1943,7 @@ void create_reference_database(unsigned int ref_storage_format,
|
||||||
adjust_shared_perm(git_path("refs"));
|
adjust_shared_perm(git_path("refs"));
|
||||||
|
|
||||||
repo_set_ref_storage_format(the_repository, ref_storage_format);
|
repo_set_ref_storage_format(the_repository, ref_storage_format);
|
||||||
if (refs_init_db(&err))
|
if (refs_init_db(get_main_ref_store(the_repository), 0, &err))
|
||||||
die("failed to set up refs db: %s", err.buf);
|
die("failed to set up refs db: %s", err.buf);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue