Merge branch 'ms/refs-optimize'
"git refs optimize" is added for not very well explained reason despite it does the same thing as "git pack-refs"... * ms/refs-optimize: t: add test for git refs optimize subcommand t0601: refactor tests to be shareable builtin/refs: add optimize subcommand doc: pack-refs: factor out common options builtin/pack-refs: factor out core logic into a shared library builtin/pack-refs: convert to use the generic refs_optimize() API reftable-backend: implement 'optimize' action files-backend: implement 'optimize' action refs: add a generic 'optimize' API
This commit is contained in:
@@ -1528,6 +1528,15 @@ static int files_pack_refs(struct ref_store *ref_store,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int files_optimize(struct ref_store *ref_store, struct pack_refs_opts *opts)
|
||||
{
|
||||
/*
|
||||
* For the "files" backend, "optimizing" is the same as "packing".
|
||||
* So, we just call the existing worker function for packing.
|
||||
*/
|
||||
return files_pack_refs(ref_store, opts);
|
||||
}
|
||||
|
||||
/*
|
||||
* People using contrib's git-new-workdir have .git/logs/refs ->
|
||||
* /some/other/path/.git/logs/refs, and that may live on another device.
|
||||
@@ -3989,6 +3998,7 @@ struct ref_storage_be refs_be_files = {
|
||||
.transaction_abort = files_transaction_abort,
|
||||
|
||||
.pack_refs = files_pack_refs,
|
||||
.optimize = files_optimize,
|
||||
.rename_ref = files_rename_ref,
|
||||
.copy_ref = files_copy_ref,
|
||||
|
||||
|
||||
@@ -447,6 +447,8 @@ typedef int ref_transaction_commit_fn(struct ref_store *refs,
|
||||
|
||||
typedef int pack_refs_fn(struct ref_store *ref_store,
|
||||
struct pack_refs_opts *opts);
|
||||
typedef int optimize_fn(struct ref_store *ref_store,
|
||||
struct pack_refs_opts *opts);
|
||||
typedef int rename_ref_fn(struct ref_store *ref_store,
|
||||
const char *oldref, const char *newref,
|
||||
const char *logmsg);
|
||||
@@ -572,6 +574,7 @@ struct ref_storage_be {
|
||||
ref_transaction_abort_fn *transaction_abort;
|
||||
|
||||
pack_refs_fn *pack_refs;
|
||||
optimize_fn *optimize;
|
||||
rename_ref_fn *rename_ref;
|
||||
copy_ref_fn *copy_ref;
|
||||
|
||||
|
||||
@@ -1741,6 +1741,12 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int reftable_be_optimize(struct ref_store *ref_store,
|
||||
struct pack_refs_opts *opts)
|
||||
{
|
||||
return reftable_be_pack_refs(ref_store, opts);
|
||||
}
|
||||
|
||||
struct write_create_symref_arg {
|
||||
struct reftable_ref_store *refs;
|
||||
struct reftable_stack *stack;
|
||||
@@ -2727,6 +2733,7 @@ struct ref_storage_be refs_be_reftable = {
|
||||
.transaction_abort = reftable_be_transaction_abort,
|
||||
|
||||
.pack_refs = reftable_be_pack_refs,
|
||||
.optimize = reftable_be_optimize,
|
||||
.rename_ref = reftable_be_rename_ref,
|
||||
.copy_ref = reftable_be_copy_ref,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user