MCPcopy Create free account
hub / github.com/git/git / rename_one_ref

Function rename_one_ref

builtin/remote.c:713–760  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

711}
712
713static int rename_one_ref(const struct reference *ref, void *cb_data)
714{
715 struct strbuf new_referent = STRBUF_INIT;
716 struct strbuf new_refname = STRBUF_INIT;
717 struct rename_info *rename = cb_data;
718 const struct object_id *oid = ref->oid;
719 const char *referent = ref->target;
720 int error;
721
722 compute_renamed_ref(rename, ref->name, &new_refname);
723
724 if (ref->flags & REF_ISSYMREF) {
725 /*
726 * Stupidly enough `referent` is not pointing to the immediate
727 * target of a symref, but it's the recursively resolved value.
728 * So symrefs pointing to symrefs would be misresolved, and
729 * unborn symrefs don't have any value for the `referent` at all.
730 */
731 referent = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
732 ref->name, RESOLVE_REF_NO_RECURSE,
733 NULL, NULL);
734 compute_renamed_ref(rename, referent, &new_referent);
735 oid = NULL;
736 }
737
738 error = ref_transaction_delete(rename->transaction, ref->name,
739 oid, referent, REF_NO_DEREF, NULL, rename->err);
740 if (error < 0)
741 goto out;
742
743 error = ref_transaction_update(rename->transaction, new_refname.buf, oid, null_oid(the_hash_algo),
744 (ref->flags & REF_ISSYMREF) ? new_referent.buf : NULL, NULL,
745 REF_SKIP_CREATE_REFLOG | REF_NO_DEREF | REF_SKIP_OID_VERIFICATION,
746 NULL, rename->err);
747 if (error < 0)
748 goto out;
749
750 error = rename_one_reflog(ref->name, oid, rename);
751 if (error < 0)
752 goto out;
753
754 display_progress(rename->progress, ++rename->progress_nr);
755
756out:
757 strbuf_release(&new_referent);
758 strbuf_release(&new_refname);
759 return error;
760}
761
762static int migrate_file(struct remote *remote)
763{

Callers

nothing calls this directly

Calls 9

compute_renamed_refFunction · 0.85
refs_resolve_ref_unsafeFunction · 0.85
get_main_ref_storeFunction · 0.85
ref_transaction_deleteFunction · 0.85
ref_transaction_updateFunction · 0.85
null_oidFunction · 0.85
rename_one_reflogFunction · 0.85
display_progressFunction · 0.85
strbuf_releaseFunction · 0.85

Tested by

no test coverage detected