我有一个 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]
最佳答案
您可以使用 Bazaar 的 bzrlib
API 获取有关任何给定 Bazaar 存储库的信息。
>>> from bzrlib.branch import BzrBranch
>>> branch = BzrBranch.open('.')
>>> branch.last_revision_info()
更多示例可用here .
关于python - 在不调用 bzr 的情况下从 Python 确定 Bazaar 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630893/