commit - 90830082630cd5bcd64ab03af3abeb4c4998d1f9
commit + da630daa54557a42066707f18f070393197a0243
blob - 8a51215c0f8f778d544a921ee6dbfcd05bf85bec
blob + f4cf4ebbb4c63cb23b1bfd3b1d55c216a3e8951b
--- got/got.c
+++ got/got.c
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);