commit - d955343d21ec47956137ebce96b31ce9c0de5669
commit + 0ed2285b0119b293d6b77b882c707c0377e176cd
blob - 52605751687dfacb015e943762eb3bfc59fcdfd7
blob + 8885743e283c1cb4fc9c98d7c28f6d6732f33469
--- lib/repository.c
+++ lib/repository.c
return err;
}
- err = got_repo_match_object_id_prefix(id, id_str, obj_type, repo);
- if (err) {
- if (err->code != GOT_ERR_BAD_OBJ_ID_STR)
- return err;
- err = got_ref_open(&ref, repo, id_str, 0);
- if (err != NULL)
+ err = got_ref_open(&ref, repo, id_str, 0);
+ if (err == NULL) {
+ err = got_ref_resolve(id, repo, ref);
+ if (err)
goto done;
if (label) {
*label = strdup(got_ref_get_name(ref));
goto done;
}
}
- err = got_ref_resolve(id, repo, ref);
- } else if (label) {
- err = got_object_id_str(label, *id);
- if (*label == NULL) {
- err = got_error_from_errno("strdup");
+ } else {
+ if (err->code != GOT_ERR_NOT_REF &&
+ err->code != GOT_ERR_BAD_REF_NAME)
goto done;
+ err = got_repo_match_object_id_prefix(id, id_str,
+ obj_type, repo);
+ if (err) {
+ if (err->code == GOT_ERR_BAD_OBJ_ID_STR)
+ err = got_error_not_ref(id_str);
+ goto done;
}
+ if (label) {
+ err = got_object_id_str(label, *id);
+ if (*label == NULL) {
+ err = got_error_from_errno("strdup");
+ goto done;
+ }
+ }
}
done:
if (ref)