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>

Karthik Nayak committed May 7, 2024 at 14:58 UTC 4865707bdae18163c215f2fa44c37388989bc0e4
5 files changed -172
refs/debug.c
-13
@@ -131,18 +131,6 @@ static int debug_pack_refs(struct ref_store *ref_store, struct pack_refs_opts *o
131 return res;
132 }
133
134 -static int debug_create_symref(struct ref_store *ref_store,
135 - const char *ref_name, const char *target,
136 - const char *logmsg)
137 -{
138 - struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
139 - int res = drefs->refs->be->create_symref(drefs->refs, ref_name, target,
140 - logmsg);
141 - trace_printf_key(&trace_refs, "create_symref: %s -> %s \"%s\": %d\n", ref_name,
142 - target, logmsg, res);
143 - return res;
144 -}
145 -
134 static int debug_rename_ref(struct ref_store *ref_store, const char *oldref,
135 const char *newref, const char *logmsg)
136 {
@@ -441,7 +429,6 @@ struct ref_storage_be refs_be_debug = {
429 .initial_transaction_commit = debug_initial_transaction_commit,
430
431 .pack_refs = debug_pack_refs,
444 - .create_symref = debug_create_symref,
432 .rename_ref = debug_rename_ref,
433 .copy_ref = debug_copy_ref,
434
refs/files-backend.c
-67
@@ -1903,23 +1903,6 @@ static int create_ref_symlink(struct ref_lock *lock, const char *target)
1903 return ret;
1904 }
1905
1906 -static void update_symref_reflog(struct files_ref_store *refs,
1907 - struct ref_lock *lock, const char *refname,
1908 - const char *target, const char *logmsg)
1909 -{
1910 - struct strbuf err = STRBUF_INIT;
1911 - struct object_id new_oid;
1912 -
1913 - if (logmsg &&
1914 - refs_resolve_ref_unsafe(&refs->base, target,
1915 - RESOLVE_REF_READING, &new_oid, NULL) &&
1916 - files_log_ref_write(refs, refname, &lock->old_oid,
1917 - &new_oid, logmsg, 0, &err)) {
1918 - error("%s", err.buf);
1919 - strbuf_release(&err);
1920 - }
1921 -}
1922 -
1906 static int create_symref_lock(struct files_ref_store *refs,
1907 struct ref_lock *lock, const char *refname,
1908 const char *target, struct strbuf *err)
@@ -1939,55 +1922,6 @@ static int create_symref_lock(struct files_ref_store *refs,
1922 return 0;
1923 }
1924
1942 -static int create_and_commit_symref(struct files_ref_store *refs,
1943 - struct ref_lock *lock, const char *refname,
1944 - const char *target, const char *logmsg)
1945 -{
1946 - struct strbuf err = STRBUF_INIT;
1947 - int ret;
1948 -
1949 - if (prefer_symlink_refs && !create_ref_symlink(lock, target)) {
1950 - update_symref_reflog(refs, lock, refname, target, logmsg);
1951 - return 0;
1952 - }
1953 -
1954 - ret = create_symref_lock(refs, lock, refname, target, &err);
1955 - if (!ret) {
1956 - update_symref_reflog(refs, lock, refname, target, logmsg);
1957 -
1958 - if (commit_ref(lock) < 0)
1959 - return error("unable to write symref for %s: %s", refname,
1960 - strerror(errno));
1961 - } else {
1962 - return error("%s", err.buf);
1963 - }
1964 -
1965 - return ret;
1966 -}
1967 -
1968 -static int files_create_symref(struct ref_store *ref_store,
1969 - const char *refname, const char *target,
1970 - const char *logmsg)
1971 -{
1972 - struct files_ref_store *refs =
1973 - files_downcast(ref_store, REF_STORE_WRITE, "create_symref");
1974 - struct strbuf err = STRBUF_INIT;
1975 - struct ref_lock *lock;
1976 - int ret;
1977 -
1978 - lock = lock_ref_oid_basic(refs, refname, &err);
1979 - if (!lock) {
1980 - error("%s", err.buf);
1981 - strbuf_release(&err);
1982 - return -1;
1983 - }
1984 -
1985 - ret = create_and_commit_symref(refs, lock, refname, target, logmsg);
1986 -
1987 - unlock_ref(lock);
1988 - return ret;
1989 -}
1990 -
1925 static int files_reflog_exists(struct ref_store *ref_store,
1926 const char *refname)
1927 {
@@ -3374,7 +3308,6 @@ struct ref_storage_be refs_be_files = {
3308 .initial_transaction_commit = files_initial_transaction_commit,
3309
3310 .pack_refs = files_pack_refs,
3377 - .create_symref = files_create_symref,
3311 .rename_ref = files_rename_ref,
3312 .copy_ref = files_copy_ref,
3313
refs/packed-backend.c
-1
@@ -1714,7 +1714,6 @@ struct ref_storage_be refs_be_packed = {
1714 .initial_transaction_commit = packed_initial_transaction_commit,
1715
1716 .pack_refs = packed_pack_refs,
1717 - .create_symref = NULL,
1717 .rename_ref = NULL,
1718 .copy_ref = NULL,
1719
refs/refs-internal.h
-5
@@ -566,10 +566,6 @@ typedef int ref_transaction_commit_fn(struct ref_store *refs,
566
567 typedef int pack_refs_fn(struct ref_store *ref_store,
568 struct pack_refs_opts *opts);
569 -typedef int create_symref_fn(struct ref_store *ref_store,
570 - const char *ref_target,
571 - const char *refs_heads_master,
572 - const char *logmsg);
569 typedef int rename_ref_fn(struct ref_store *ref_store,
570 const char *oldref, const char *newref,
571 const char *logmsg);
@@ -690,7 +686,6 @@ struct ref_storage_be {
686 ref_transaction_commit_fn *initial_transaction_commit;
687
688 pack_refs_fn *pack_refs;
693 - create_symref_fn *create_symref;
689 rename_ref_fn *rename_ref;
690 copy_ref_fn *copy_ref;
691
refs/reftable-backend.c
-86
@@ -1256,91 +1256,6 @@ struct write_create_symref_arg {
1256 const char *logmsg;
1257 };
1258
1259 -static int write_create_symref_table(struct reftable_writer *writer, void *cb_data)
1260 -{
1261 - struct write_create_symref_arg *create = cb_data;
1262 - uint64_t ts = reftable_stack_next_update_index(create->stack);
1263 - struct reftable_ref_record ref = {
1264 - .refname = (char *)create->refname,
1265 - .value_type = REFTABLE_REF_SYMREF,
1266 - .value.symref = (char *)create->target,
1267 - .update_index = ts,
1268 - };
1269 - struct reftable_log_record log = {0};
1270 - struct object_id new_oid;
1271 - struct object_id old_oid;
1272 - int ret;
1273 -
1274 - reftable_writer_set_limits(writer, ts, ts);
1275 -
1276 - ret = reftable_writer_add_ref(writer, &ref);
1277 - if (ret)
1278 - return ret;
1279 -
1280 - /*
1281 - * Note that it is important to try and resolve the reference before we
1282 - * write the log entry. This is because `should_write_log()` will munge
1283 - * `core.logAllRefUpdates`, which is undesirable when we create a new
1284 - * repository because it would be written into the config. As HEAD will
1285 - * not resolve for new repositories this ordering will ensure that this
1286 - * never happens.
1287 - */
1288 - if (!create->logmsg ||
1289 - !refs_resolve_ref_unsafe(&create->refs->base, create->target,
1290 - RESOLVE_REF_READING, &new_oid, NULL) ||
1291 - !should_write_log(&create->refs->base, create->refname))
1292 - return 0;
1293 -
1294 - fill_reftable_log_record(&log);
1295 - log.refname = xstrdup(create->refname);
1296 - log.update_index = ts;
1297 - log.value.update.message = xstrndup(create->logmsg,
1298 - create->refs->write_options.block_size / 2);
1299 - memcpy(log.value.update.new_hash, new_oid.hash, GIT_MAX_RAWSZ);
1300 - if (refs_resolve_ref_unsafe(&create->refs->base, create->refname,
1301 - RESOLVE_REF_READING, &old_oid, NULL))
1302 - memcpy(log.value.update.old_hash, old_oid.hash, GIT_MAX_RAWSZ);
1303 -
1304 - ret = reftable_writer_add_log(writer, &log);
1305 - reftable_log_record_release(&log);
1306 - return ret;
1307 -}
1308 -
1309 -static int reftable_be_create_symref(struct ref_store *ref_store,
1310 - const char *refname,
1311 - const char *target,
1312 - const char *logmsg)
1313 -{
1314 - struct reftable_ref_store *refs =
1315 - reftable_be_downcast(ref_store, REF_STORE_WRITE, "create_symref");
1316 - struct reftable_stack *stack = stack_for(refs, refname, &refname);
1317 - struct write_create_symref_arg arg = {
1318 - .refs = refs,
1319 - .stack = stack,
1320 - .refname = refname,
1321 - .target = target,
1322 - .logmsg = logmsg,
1323 - };
1324 - int ret;
1325 -
1326 - ret = refs->err;
1327 - if (ret < 0)
1328 - goto done;
1329 -
1330 - ret = reftable_stack_reload(stack);
1331 - if (ret)
1332 - goto done;
1333 -
1334 - ret = reftable_stack_add(stack, &write_create_symref_table, &arg);
1335 -
1336 -done:
1337 - assert(ret != REFTABLE_API_ERROR);
1338 - if (ret)
1339 - error("unable to write symref for %s: %s", refname,
1340 - reftable_error_str(ret));
1341 - return ret;
1342 -}
1343 -
1259 struct write_copy_arg {
1260 struct reftable_ref_store *refs;
1261 struct reftable_stack *stack;
@@ -2248,7 +2163,6 @@ struct ref_storage_be refs_be_reftable = {
2163 .initial_transaction_commit = reftable_be_initial_transaction_commit,
2164
2165 .pack_refs = reftable_be_pack_refs,
2251 - .create_symref = reftable_be_create_symref,
2166 .rename_ref = reftable_be_rename_ref,
2167 .copy_ref = reftable_be_copy_ref,
2168