Github API生成的带注释的标记未显示在git describe

时间:2018-08-17 04:09:35

标签: python-3.x git github-api pygithub

我正在尝试编写一个脚本,以使用自定义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 apipygithub有什么特别之处吗?还是我错过了pygithub中的api调用?

1 个答案:

答案 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