Bazaar:bzrlib相当于“bzr info”

时间:2012-02-03 16:07:03

标签: python version-control bazaar

我正在尝试编写一个简单的脚本,遍历一个目录列表,检查它们是否是bzr版本控制的,然后告诉我它们的状态是什么 - 即,修改了多少文件,添加了等等。

我已经使用bzrlib Python API完成了这项工作,并且它运行良好。

我最后的绊脚石一直试图找出如何进入分支机构起源的主干。

在命令行执行此操作非常简单:

 bzr info

然而,bzrlib中的等价物是什么?

目前,我正在打开工作树的位置:

d = 'some directory'
wt = workingtree.WorkingTree.open(d)

我倾向于在我的工作中使用“checkout”,所以我会找一些东西告诉我当前实例检出的分支的位置,例如从命令行:

>bzr info dev
 Checkout (format: unnamed)
 Location:
    checkout dev: dev
 checkout of branch: bzr+ssh://bazaar.launchpad.net/....

我基本上希望最后一行作为我可以插入脚本的字符串。

非常感谢你的时间

干杯,

戴夫

供将来参考,感兴趣的人士。按照下面接受的答案中的提示,这里是如何获取使用位置'd'的bzr信息:

from bzrlib import repository, branch, workingtree, info
r = repository.Repository.open(d)
b = branch.Branch.open(d)
w = workingtree.WorkingTree.open(d)

bzr_info = info.gather_location_info(r,branch=b,working=w)

有一种更优雅的方式可以做到这一点,在这种情况下可以随意添加评论!

1 个答案:

答案 0 :(得分:2)

看看以下方法:

bzrlib.builtins.cmd_info
bzrlib.info.show_component_info
bzrlib.info.gather_location_info

基本上gather_location_info()会为您提供信息,但AFAICT需要为其提供一个打开的存储库,分支和工作树。