每次SVN提交时自动更新setup.py版本
我们正在使用buildout来部署Plone的插件,这些插件以开发版本的形式存在。我们通过Mr. Developer这个工具把源代码推送到生产环境,而没有进行任何的.egg打包。
有没有什么好的方法可以在每次提交代码到SVN时,自动更新setup.py文件中的版本号,让它显示SVN的发布号或者时间戳?这样可以快速跟踪不同的包。
Distutils似乎提供了一种神奇的版本标记机制,但我没有找到任何相关的文档说明该如何使用。
3 个回答
0
在每次提交到SVN时,如何自动更新setup.py中的版本号,最好是用SVN的发布号或时间戳呢?
如果
- 构建过程可以执行某些操作(我懒得去看buildout的说明)
- 使用额外的仅限Windows的工具对你来说不是个大问题
你可以考虑使用来自TortoiseSVN包的SubWCRev命令行工具。它会稍微改变当前的工作流程:
- 不再使用真实的setup.py仓库,而是存储一个setup.py的模板,其中动态部分的数据由SubWCRev关键字替代(这些关键字可以处理修订号和日期等信息)
- 每次构建过程都需要通过调用subwcrev来根据预定义的setup模板重新生成实际的setup.py,使用的是(本地的)工作副本
1
6
在setup.cfg文件中添加类似下面的内容:
[egg_info]
tag_build = .dev
tag_svn_revision = 1
当然,这个方法只适用于Subversion(一个版本控制系统);我不确定其他版本控制系统有没有类似的替代方案。这个文件可能会被一些ZopeSkel模板默认添加。一些Plone包也有这个文件;Wichert Akkerman对此很感兴趣。
请注意,每次提交内容时,你都需要运行bin/buildout
或python setup.py egg_info
,否则egg-info目录中的版本信息不会更新。