2011-12-13 52 views
3

我们正在部署Plone附加组件作为带buildout的开发鸡蛋。使用Mr. Developer构建配方将鸡蛋作为源代码签出推入生产环境,并且.egg包装不会在任何时候完成。自动更新每个SVN提交的setup.py版本

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

Distutils似乎提供某种魔术版本的冲压机制,但我没有找到任何参考文档应该如何使用。

+1

重复[让 - svn的修订版本号码 - 到 - 一个程序的副本再生实际setup.py - 自动(http://stackoverflow.com/questions/14 49935/getting-svn-revision-number-into-a-program-automatically)?! – gecco

回答

1

您可以使用简单的SVN Keywords,像

__version__ = "$Rev:$" 

SVN自动与该关键字的变化在每个filechange版本分别提交。

+2

对于每次提交setup.py(假设您将此行放入setup.py中),这都会正常工作。当您提交另一个文件时,它不会自行更新。 –

+0

1 - 使用正确的SVN关键字,修订它是** $ Revision $ **,而不是你的报废2 - 扩展版本关键字*不是纯粹的数字修订版本*,它看起来就像'$ Revision:1132 $'和**需要后处理** 3 - 关键字显示文件的最新修订版本,而不是最后提交修订版本。 *不好,你必须重做你的家庭作业和RTFM * –

6

添加这样的事情在setup.cfg:

[egg_info] 
tag_build = .dev 
tag_svn_revision = 1 

为当然的颠覆这只作品;不知道是否有其他vcs的替代品。这个文件可能仍然会被一些ZopeSkel模板默认添加。一些plone软件包也有它; Wichert Akkerman是/是它的粉丝。

注意,你需要运行每次bin/buildoutpython setup.py egg_info犯东西,否则鸡蛋信息目录版本信息没有更新。

+0

但是,当你使用这种方法释放包到pypi时,请注意。在释放之前不要忘记从setup.cfg中删除这些行。有太多的mypackage-1.2-r1234.tar.gz软件包... –

0

这将是对每一个SVN承诺SVN版本号或时间戳自动更新setup.py版本戳 最好的方法?

如果

  • 构建过程可以执行一些行动(我懒得读扩建配方)使用额外的Windows的唯一工具
  • 不强“禁忌”为你

你可以考虑使用SubWCRev cli工具从TortoiseSVN包。它(略)改变当前的工作流程:

  • ,而不是真正的 setup.py库店模板setup.py,其中数据的动态部分取代SubWCRev-keywords(他们可以处理修订,日期以游离形式)
  • 每次构建过程都通过调用subwcrev反对(本地)正在与预定义的设置模板
+0

工具链在问题中进行了解释,幸运的是它不是基于Windows的工具链。 –

+0

“使用Developer buildout recipe先生”告诉**我**什么也没有,BTW –

+0

那么你可能不会成为问题的目标观众的一部分,但无论如何感谢你的建议:) –