【问题标题】:Latest git tag not recognized when installing requirements.txt安装 requirements.txt 时无法识别最新的 git 标签
【发布时间】:2020-08-21 20:58:09
【问题描述】:

我的 requirements.txt 中有一个来自另一个 git repo 的依赖项(不是我的,但我可以访问它)。

昨天我合并了一个 PR,并在对其应用标签 v0.1.5 之后。我按顺序将我的项目要求更新为:

git+https://HASH@github.com/repowner/dependency_name.git@v0.1.5  

安装的依赖没有问题。但是我发现了一个错误并决定修复它。我创建了一个新分支,更改了setup.py 中的版本,分配了标签v0.1.5b,并使用了git pushgit push --tags,都在合并之前。 (我认为这是正确的做法,而不是稍后应用)

现在我将要求更新为

git+https://HASH@github.com/repowner/dependency_name.git@v0.1.5b

但是,当我执行pip install -r requirements.txt 时,会安装 v.0.1.5 版本。它不会引发任何错误,它最终会简单地忽略 b 。我尝试使用 git tag -a v0.1.5b <commit_hash> 将标签分配给 master 但我得到了回报:

fatal: tag 'v0.1.5b' already exists

如果我尝试只推送标签:

Everything up-to-date

我不确定我是否不应该在版本中使用“b”,或者我可能遗漏了什么?有人可以帮我解决吗?如果我能在不推动另一个提交的情况下解决它会很好,(如 v.0.1.6)但我采取任何解决方案。

【问题讨论】:

  • 以前从未使用过 pip 和需求,但这听起来像是一英里外的错误或不受支持的命名约定。根据PEP 440Local version labels MUST start and end with an ASCII letter or digit.,所以我猜你最终可以使用字母,即使我很少看到它。但是[N!]N(.N)*[{a|b|rc}N][.postN][.devN]表示应该命名为v0.1.5b1或者类似的名字?
  • @Torxed 您引用的第一部分用于“本地版本标签”,您引用的版本标签方案用于公共版本标签。看我的回答。

标签: python git setuptools setup.py distutils


【解决方案1】:

有效的 Python 公共版本标识符都以数字结尾:

Public version identifiers

规范的公共版本标识符必须符合以下方案:

[N!]N(.N)*[{a|b|rc}N][.postN][.devN]`

Choosing a versioning scheme 比上面的 PEP 440 描述更容易阅读。在这里您还会注意到所有模式都以数字结尾。

鉴于您不想递增到 v0.1.6,您有以下备选选项:

  • v0.1.5.post1
  • v0.1.5.dev1

旁注:要将已创建的标记重新分配给不同的提交,请在 git tag 命令上使用 -f 标志,然后再次尝试推送。

【讨论】:

  • 结束了重置并进行了新的提交,但很高兴知道这一点。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2016-02-08
  • 2022-01-05
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多