在每个SVN提交上自动更新setup.py版本

时间:2011-12-13 09:22:31

标签: python svn plone setuptools buildout

我们正在将Plone附加组件部署为具有buildout的开发阶段。使用Mr.Builder buildout recipe并且.egg包装在任何时候都没有完成,因此将鸡蛋推送到生产中作为源代码检查。

在每个SVN提交到SVN版本号或时间戳时自动更新setup.py版本标记的最佳方法是什么?这将提供一些跟踪不同包的快速信息。

Distutils似乎提供了某种神奇的版本标记机制,但我没有找到任何参考文档如何使用它。

3 个答案:

答案 0 :(得分:6)

在setup.cfg中添加如下内容:

[egg_info]
tag_build = .dev
tag_svn_revision = 1

这当然只适用于颠覆;不确定是否有其他vcs的替代品。某些ZopeSkel模板可能仍会默认添加此文件。有些plone包装也有; Wichert Akkerman是它的粉丝。

请注意,每次提交时都需要运行bin/buildoutpython setup.py egg_info,否则egg-info目录中的版本信息不会更新。

答案 1 :(得分:1)

您只需使用 SVN Keywords ,例如

__version__ = "$Rev:$"

SVN会自动使用此关键字更改每个filechange上的版本,分别提交。

答案 2 :(得分:0)

  

自动更新setup.py版本标记的最佳方法是什么   在每个SVN上提交SVN版本号或时间戳?

如果

  • 构建过程可以执行一些操作(我懒得阅读构建配方)
  • 使用其他仅限Windows的工具对您来说并不是“禁忌”

您可以考虑使用TortoiseSVN软件包中的SubWCRev cli-tool。它(稍微)改变了当前的工作流程:

  • 而不是真实的 setup.py存储库模板的setup.py,其中动态部分数据被SubWCRev-keywords替换(他们可以处理修订,日期以自由形式)
  • 每个构建过程都必须通过使用预定义的setup-template
  • 调用subwcrev(本地)工作副本来重新生成实际的setup.py