Commit Diff


commit - 5a8b5076742038c09dece0c1e59ecddf8cd7a41a
commit + 785d65a4b3057e85fda2a59c84f19be80408935a
blob - e604a6980724929b924f7abf1a893dcaafca0590
blob + 4c8c8ac61ee774c04b4daf2fe2e46b0b82fed5ac
--- lib/repository.c
+++ lib/repository.c
@@ -1502,6 +1502,7 @@ got_repo_object_match_tag(struct got_tag_object **tag,
 	struct got_reflist_head refs;
 	struct got_reflist_entry *re;
 	struct got_object_id *tag_id;
+	int name_is_absolute = (strncmp(name, "refs/", 5) == 0);
 
 	SIMPLEQ_INIT(&refs);
 	*tag = NULL;
@@ -1515,7 +1516,8 @@ got_repo_object_match_tag(struct got_tag_object **tag,
 		refname = got_ref_get_name(re->ref);
 		if (got_ref_is_symbolic(re->ref))
 			continue;
-		refname += strlen("refs/tags/");
+		if (!name_is_absolute)
+			refname += strlen("refs/tags/");
 		if (strcmp(refname, name) != 0)
 			continue;
 		err = got_ref_resolve(&tag_id, repo, re->ref);