我正在尝试编写一个简单的脚本,它遍历目录列表,检查它们是否受 bzr 版本控制,然后告诉我它们的状态是什么——即,有多少文件被修改、添加等。
我已经使用 bzrlib Python API 完成了这项工作,而且效果很好。
我最后的绊脚石一直是试图弄清楚如何找到分支起源的树干。
要在命令行执行此操作很简单:
bzr info
但是,bzrlib 中的等价物是什么?
目前,我将这些位置作为工作树打开:
d = 'some directory'
wt = workingtree.WorkingTree.open(d)
我倾向于在我的工作中使用“checkout”,所以我会寻找一些东西来告诉我当前实例被 check out 的分支的位置,例如从命令行:
>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)
也许有一种更优雅的方式来做到这一点,在这种情况下,请随时在此处添加评论!
最佳答案
看看以下方法:
bzrlib.builtins.cmd_info
bzrlib.info.show_component_info
bzrlib.info.gather_location_info
基本上 gather_location_info() 会给你信息,但 AFAICT 你需要给它一个打开的存储库、分支和工作树。
关于python - Bazaar:bzrlib 相当于 "bzr info",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9131673/