在Launchpad上,有没有一个bzr命令可以查看项目的所有分支?

如果您访问Launchpad上的一个项目,您可以看到所有参与该项目的开发者的所有活跃分支。
是否有一个命令可以在不访问浏览器上的Launchpad项目页面的情况下执行相同操作?
2个回答

我不知道有任何能够做到这一点的bzr命令,但是使用Launchpad python API编写脚本实际上非常容易。例如:

#!/usr/bin/env python
import os, sys
from launchpadlib.launchpad import Launchpad

cachedir = os.path.expanduser("~/.launchpadlib/cache/")
launchpad = Launchpad.login_anonymously('find_branches',
                                        'production',
                                        cachedir)

try:
    project = launchpad.projects[sys.argv[1]]
    for b in project.getBranches():
        if b.lifecycle_status not in ["Abandoned", "Merged"]:
            print b.bzr_identity
except KeyError:
    print "Project unknown... \nUsage: " + sys.argv[0] + " lp_project_name"

所以通过python find_branches.py deluge我们得到:

lp:deluge
lp:~vcs-imports/deluge/trunk
lp:~mvoncken/deluge/ajax-template-dev
lp:~deluge-team/deluge/master
lp:~shaohao/deluge/0.9
lp:~damoxc/deluge/master

你可以尽情发挥,按照 date_createddate_last_modified 进行排序,或者根据自己感兴趣的分支创建自定义启发式算法。参见:

https://launchpad.net/+apidoc/1.0.html#branch


市集只是一个版本控制系统,与Launchpad完全独立的项目。
可以直接解析项目分支的HTML页面或其Atom新闻订阅源。
声明一个shell函数: lslp() { wget -q -O - http://feeds.launchpad.net/$1/branches.atom | xml2 | grep "/feed/entry/title=" | cut -c 19-; }
wget -q -O - http://feeds.launchpad.net/projectname/branches.atom 获取分支新闻源(Atom xml)
xml2 将XML文档转换为平面格式
grep "/feed/entry/title=" 过滤掉包含"/feed/entry/title="的行,即包含分支名称的XML节点
cut -c 19- 从结果行中删除"/feed/entry/title="。
示例: $ lslp deluge lp:deluge lp:~vcs-imports/deluge/trunk lp:~damoxc/deluge/master lp:~deluge-team/deluge/master lp:~shaohao/deluge/0.9 lp:~mvoncken/deluge/ajax-template-dev