refs: remove create_symref and associated dead code

In the previous commits, we converted `refs_create_symref()` to utilize
transactions to perform symref updates. Earlier `refs_create_symref()`
used `create_symref()` to do the same.

We can now remove `create_symref()` and any code associated with it
which is no longer used. We remove `create_symref()` code from all the
reference backends and also remove it entirely from the `ref_storage_be`
struct.

Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Karthik Nayak
2024-05-07 14:58:59 +02:00
committed by Junio C Hamano
parent f151dfe3c9
commit 4865707bda
5 changed files with 0 additions and 172 deletions

View File

@ -1256,91 +1256,6 @@ struct write_create_symref_arg {
const char *logmsg;
};
static int write_create_symref_table(struct reftable_writer *writer, void *cb_data)
{
struct write_create_symref_arg *create = cb_data;
uint64_t ts = reftable_stack_next_update_index(create->stack);
struct reftable_ref_record ref = {
.refname = (char *)create->refname,
.value_type = REFTABLE_REF_SYMREF,
.value.symref = (char *)create->target,
.update_index = ts,
};
struct reftable_log_record log = {0};
struct object_id new_oid;
struct object_id old_oid;
int ret;
reftable_writer_set_limits(writer, ts, ts);
ret = reftable_writer_add_ref(writer, &ref);
if (ret)
return ret;
/*
* Note that it is important to try and resolve the reference before we
* write the log entry. This is because `should_write_log()` will munge
* `core.logAllRefUpdates`, which is undesirable when we create a new
* repository because it would be written into the config. As HEAD will
* not resolve for new repositories this ordering will ensure that this
* never happens.
*/
if (!create->logmsg ||
!refs_resolve_ref_unsafe(&create->refs->base, create->target,
RESOLVE_REF_READING, &new_oid, NULL) ||
!should_write_log(&create->refs->base, create->refname))
return 0;
fill_reftable_log_record(&log);
log.refname = xstrdup(create->refname);
log.update_index = ts;
log.value.update.message = xstrndup(create->logmsg,
create->refs->write_options.block_size / 2);
memcpy(log.value.update.new_hash, new_oid.hash, GIT_MAX_RAWSZ);
if (refs_resolve_ref_unsafe(&create->refs->base, create->refname,
RESOLVE_REF_READING, &old_oid, NULL))
memcpy(log.value.update.old_hash, old_oid.hash, GIT_MAX_RAWSZ);
ret = reftable_writer_add_log(writer, &log);
reftable_log_record_release(&log);
return ret;
}
static int reftable_be_create_symref(struct ref_store *ref_store,
const char *refname,
const char *target,
const char *logmsg)
{
struct reftable_ref_store *refs =
reftable_be_downcast(ref_store, REF_STORE_WRITE, "create_symref");
struct reftable_stack *stack = stack_for(refs, refname, &refname);
struct write_create_symref_arg arg = {
.refs = refs,
.stack = stack,
.refname = refname,
.target = target,
.logmsg = logmsg,
};
int ret;
ret = refs->err;
if (ret < 0)
goto done;
ret = reftable_stack_reload(stack);
if (ret)
goto done;
ret = reftable_stack_add(stack, &write_create_symref_table, &arg);
done:
assert(ret != REFTABLE_API_ERROR);
if (ret)
error("unable to write symref for %s: %s", refname,
reftable_error_str(ret));
return ret;
}
struct write_copy_arg {
struct reftable_ref_store *refs;
struct reftable_stack *stack;
@ -2248,7 +2163,6 @@ struct ref_storage_be refs_be_reftable = {
.initial_transaction_commit = reftable_be_initial_transaction_commit,
.pack_refs = reftable_be_pack_refs,
.create_symref = reftable_be_create_symref,
.rename_ref = reftable_be_rename_ref,
.copy_ref = reftable_be_copy_ref,