【发布时间】:2011-10-10 19:43:58
【问题描述】:
情况:
我有一个 python 库,它由 git 控制,并与 distutils/setuptools 捆绑在一起。我想根据 git 标签自动生成版本号,既适用于setup.py sdist 和类似的命令,也适用于库本身。
对于第一个任务,我可以使用git describe 或类似的解决方案(请参阅How can I get the version defined in setup.py (setuptools) in my package?)。
例如,当我在标签“0.1”中并调用“setup.py sdist”时,我得到“mylib-0.1.tar.gz”;或 'mylib-0.1-3-abcd.tar.gz' 如果我在标记后更改了代码。这很好。
问题是:
当我想让这个版本号可用于库本身时,问题就出现了,因此它可以在 User-Agent HTTP 标头中将其作为“mylib/0.1-3-adcd”发送。
如果我像在How can I get the version defined in setup.py (setuptools) in my package? 中一样添加setup.py version 命令,那么这个version.py 是在制作标签之后生成的,因为它使用标签作为值。但在这种情况下,我需要在制作版本标记后再提交一次以使代码保持一致。反过来,这需要一个新标签才能进一步捆绑。
问题是:
如何打破这个依赖循环(generate-commit-tag-generate-commit-tag-...)?
【问题讨论】:
-
另见 Python 打包文档中的single-sourcing package version。
标签: python git version setuptools distutils