符合PEP-440的版本控制帮助程序

setupext-gitversion的Python项目详细描述


VersionDownloadsStatusLicenseDocs

等等…为什么?什么??

PEP440编码python包的版本方案。这个setuptools 扩展将生成Developmental ReleaseLocal 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.dev110.0.0部分是传递给^{tt3}的释放段$ 函数在setup.py中。扩展在历史记录中找到该标记,并 统计自标记之后发生的合并数–此值 成为post版本段。在这种情况下 合并。然后它统计自上次合并以来提交的次数- 此值成为development版本段。

怎么做?

使用此扩展的最简单方法是将其安装到您的生成中 环境,然后在生成和上载时从命令行使用它 你的分配。

  1. pip install setupext-gitversion进入构建环境
  2. 将以下行添加到setup.cfg
[git_version]version-file=LOCAL-VERSION
  1. 将以下行添加到manifest.in

    include LOCAL-VERSION
    
  2. 修改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是最后一个发布包的标记

  3. git_version添加到upload或分发生成中 命令。您需要使用以下内容:

    setup.py git_version sdist upload
    setup.py git_version bdist_egg upload
    

就这样当 你建立一个发行版它也足够聪明,可以生成一个空的 标记提交生成的后缀。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Eclipse中的java Maven构建调试   序列化时json JsonMappingException:(was java.lang.ArrayIndexOutOfBoundsException)   java JDBC代码为MySql提供了IllegaAccessError   用递归算法在迷宫中寻找最短路径   java编写了一个非递归算法来计算n阶乘   java spring启动应用程序[profile]。属性不起作用   java通过浏览器代理详细信息识别用户?   以模式在Linux中搜索Java文件   java Vaadin 7在组件之间触发自定义事件   java提取相对于类路径的资源   java Subselect使用CriteriaBuilder(JPA)检索Installement的右侧   java为什么它仍然显示“没有主清单属性,在   java如何编写带有预设时间的自定义时间进度条?   java为什么Eclipse中的程序在另一个IDE中工作时会出现空指针?   多线程java。lang.IllegalStateException:连接池关闭。如何在多线程应用程序中处理连接池异常?   java Android单例