在不调用bz的情况下从Python确定Bazaar版本号

2024-06-02 08:45:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django(Python)项目,它需要知道它的代码在Bazaar上的版本,以便于部署。这是一个web应用程序,所以我不想这样做,因为它会触发一个新的子进程,而且不会扩展。在

import subprocess
subprocess.Popen(["bzr", "revno"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

有没有一种方法可以解析Bazaar存储库来计算版本号?Bazaar本身是用Python编写的,它包含了用于计算revno的代码,这让我觉得这并不简单。在

^{pr2}$

编辑:最终修复

from bzrlib.branch import BzrBranch
branch = BzrBranch.open_containing('.')[0]
revno = len(branch.revision_history())

编辑:最终修复,但这次是实时的

from bzrlib.branch import BzrBranch
branch = BzrBranch.open_containing('.')[0]
revno = branch.last_revision_info()[0]

Tags: django代码fromimportbranch编辑revisionopen
2条回答

只执行一次并缓存结果(如果需要,在数据库/文件中)?我怀疑这个版本会有那么大的变化。在

您可以使用Bazaar的bzrlibAPI来获取任何给定Bazaar存储库的信息。在

>>> from bzrlib.branch import BzrBranch
>>> branch =  BzrBranch.open('.')
>>> branch.last_revision_info()

更多示例可用here。在

相关问题 更多 >