Answers:
我不知道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_created
,进行排序等操作date_last_modified
,或者针对自己感兴趣的分支创建自己的启发式方法。看到:
Bazaar只是一个版本控制系统,它与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