7

我正在尝试编写一个脚本来使用自定义 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正在做任何特别的事情?还是我错过了一个 api 调用pygithub

4

1 回答 1

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
于 2021-02-19T06:44:53.187 回答