def show(self, ref): try: obj = self.repository.revparse_single(ref) except KeyError: return {} obj_type = obj.type if obj_type == GIT_OBJ_COMMIT: return format_commit(ref, obj, self.repository) elif obj_type == GIT_OBJ_TAG: return format_tag(ref, obj, self.repository) elif obj_type == GIT_OBJ_TREE: return format_tree(ref, obj, self.repository) elif obj_type == GIT_OBJ_BLOB: return format_blob(ref, obj, self.repository)
def list_tags(repository, name_only=None): tags = [] refs = repository.listall_references() for ref in refs: if ref.startswith("refs/tags/"): if name_only: tags.append(ref[10:]) continue # this is a tag but maybe a lightweight tag tag_obj = repository.revparse_single(ref) if tag_obj and tag_obj.type == GIT_OBJ_COMMIT: # lightweight tag tags.append(format_lw_tag(ref, tag_obj, repository)) elif tag_obj and tag_obj.type == GIT_OBJ_TAG: tags.append(format_tag(ref, tag_obj, repository)) return tuple(tags)