符合PEP-440的版本控制帮助程序
setupext-gitversion的Python项目详细描述
等等…为什么?什么??
PEP440编码python包的版本方案。这个setuptools 扩展将生成Developmental Release和Local Version Label 标识正在生成的修订的段。PEP440定义 python包版本的以下格式:
version = [epoch "!"] public-version ["+" local-version] epoch = digit+ public-version = release-segment [pre-segment] [post-segment] [dev-segment] local-version = (letter | digit)+ ["." (letter|digit)+] release-segment = digit+ ("." digit+)* pre-segment = "a" digit+ | "b" digit+ | "rc" digit+ post-segment = ".post" digit+ dev-segment = ".dev" digit+
它还建议包索引只接受final releases 定义为只有一个发布段和 一个可选的纪元。为什么我要费尽周折创造一个 管理不应提交到包的版本的扩展 索引?如果开发的python包在 业务,那么您可能知道确切的原因-使用本地python包 保存非公共包的索引很常见。这也是常见的 从内部索引中的CI服务器准备预发布包和生成。 这就是这个分机发挥作用的地方。它提供了一种一致的方式 在开发的所有阶段管理包版本。
让我们看看这个项目的状态,因为我正在写这个文件。这个 git历史记录如下:
* 3fdc192 - (HEAD, origin/initial-implementation, initial-implementation) ###### 9 more commits here * 7ca1fd2 - (origin/master, master) * 87d944e - Merge pull request #1 from dave-shawley/reorg (6 days ago) |\ | * 04d0cca - (origin/reorg, reorg) | ###### 9 more commits here |/ * bd7ad3c - (tag: 0.0.0) SYN (4 months ago)
当我运行setup.py git_version时,它会将版本设置为0.0.0.post1.dev11。 0.0.0部分是传递给^{tt3}的释放段$ 函数在setup.py中。扩展在历史记录中找到该标记,并 统计自标记之后发生的合并数–此值 成为post版本段。在这种情况下 合并。然后它统计自上次合并以来提交的次数- 此值成为development版本段。
怎么做?
使用此扩展的最简单方法是将其安装到您的生成中 环境,然后在生成和上载时从命令行使用它 你的分配。
- pip install setupext-gitversion进入构建环境
- 将以下行添加到setup.cfg:
[git_version]version-file=LOCAL-VERSION
将以下行添加到manifest.in:
include LOCAL-VERSION
修改setup.py以附加local-version的内容 发送到您的version关键字:
version_suffix=''try:withopen('LOCAL-VERSION')asf:version_suffix=f.readline().strip()exceptIOError:passsetup(# normal keywordsversion='1.2.3'+version_suffix,)
其中1.2.3是最后一个发布包的标记
将git_version添加到upload或分发生成中 命令。您需要使用以下内容:
setup.py git_version sdist upload setup.py git_version bdist_egg upload
就这样当 你建立一个发行版它也足够聪明,可以生成一个空的 标记提交生成的后缀。