commit da630daa54557a42066707f18f070393197a0243 from: Stefan Sperling date: Fri Jul 16 11:30:37 2021 UTC make got_ref_delete() report symbolic references as intended commit - 90830082630cd5bcd64ab03af3abeb4c4998d1f9 commit + da630daa54557a42066707f18f070393197a0243 blob - 8a51215c0f8f778d544a921ee6dbfcd05bf85bec blob + f4cf4ebbb4c63cb23b1bfd3b1d55c216a3e8951b --- got/got.c +++ got/got.c @@ -5279,23 +5279,29 @@ delete_ref(struct got_repository *repo, const char *re struct got_reference *ref; struct got_object_id *id = NULL; char *id_str = NULL; + const char *target; err = got_ref_open(&ref, repo, refname, 0); if (err) return err; - err = got_ref_resolve(&id, repo, ref); - if (err) - goto done; - err = got_object_id_str(&id_str, id); - if (err) - goto done; + if (got_ref_is_symbolic(ref)) { + target = got_ref_get_symref_target(ref); + } else { + err = got_ref_resolve(&id, repo, ref); + if (err) + goto done; + err = got_object_id_str(&id_str, id); + if (err) + goto done; + target = id_str; + } err = got_ref_delete(ref, repo); if (err) goto done; - printf("Deleted %s: %s\n", got_ref_get_name(ref), id_str); + printf("Deleted %s: %s\n", got_ref_get_name(ref), target); done: got_ref_close(ref); free(id);