我有一个django(Python)项目,需要知道其代码在Bazaar中的版本用于部署目的。这是一个Web应用程序,所以我不想这样做,因为它触发了一个新的子进程并且不会扩展。
import subprocess
subprocess.Popen(["bzr", "revno"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
有没有办法解析Bazaar存储库来计算版本号? Bazaar本身是用Python编写的,包含了用于计算revno的代码,这让我觉得它并不是一件容易的事。
rh = self.revision_history()
revno = len(rh)
修改:最终修复
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]
答案 0 :(得分:4)
您可以使用Bazaar的bzrlib
API获取有关任何给定Bazaar存储库的信息。
>>> from bzrlib.branch import BzrBranch
>>> branch = BzrBranch.open('.')
>>> branch.last_revision_info()
有更多示例here。
答案 1 :(得分:2)
执行一次并缓存结果(如果需要,可以在DB /文件中)?我怀疑这个版本会改变那么多。