我正在尝试编写一个脚本,以使用自定义CI触发器自动设置github版本。我有一个使用pygithub
自动创建标签和发布的python脚本。
# roughly the following code:
repo.create_git_tag(...)
repo.create_git_ref(...)
repo.create_git_release(...)
运行脚本后,一切都显示在GitHub Web UI中,在git fetch origin && git tag -l
之后,我可以在本地看到标签。但是,当我使用git describe
(甚至使用--tags
)时,它也会失败并显示fatal: No tags can describe '<head_commit_hash>'
使用git show-ref --tags
,我得到如下信息:
hash1 refs/tags/releases/1.0.0
hash2 refs/tags/releases/1.1.0
hash3 refs/tags/releases/1.1.1
然后git cat-file -p hash1
给我:
object hash_of_commit_at_tag
type commit
tag releases/1.0.0
tagger ...
Release: 1.0.0
但是,如果我自己使用git tag -a releases/1.0.0 hash_of_commit -m "Release 1.0.0"
创建并推送标签,那么git describe
会为我提供当前HEAD
的最新可访问标签。
问题是,GitHub api
或pygithub
有什么特别之处吗?还是我错过了pygithub
中的api调用?
答案 0 :(得分:0)
显然,GitHub API 在您发布时创建了未注释的标签。
对我有用的解决方案是使用 git describe --tags
这来自我的仓库,其中有两个标签是通过在 GitHub API 中发布而创建的
❯ git tag -l
v1.1.0
v1.2.0
❯ git describe
fatal: No annotated tags can describe '912268bd176bbda06983995894b46cf764b3e666'.
However, there were unannotated tags: try --tags.
❯ git describe --tags
v1.2.0