如何使用Rally Python API获取故事变更列表?
如何获取在Rally中对一个故事或缺陷所做的更改列表?
for r in rally.get('User Story', fetch=True, query=""):
print r.Changesets
r.Changesets
似乎总是一个空的集合。
我还尝试了 rally.get('Revision'...)
的方法,这个方法返回了很多修订记录,但里面没有任何关于被修改对象(故事/缺陷等)的信息。
我也试着用 query="ObjectID = %s" % r.FormattedID
,但这个查询总是没有结果。
我还在 https://github.com/RallyTools/RallyRestToolkitForPython/issues/29 上提交了一个bug,但我不确定这个问题是否会很快得到关注。
1 个回答
Changeset对象是一个包含多个Change对象的集合,这个概念在WS API中使用,但它和版本的修订没有关系。这些对象主要是为了和版本控制系统(比如Git、GitHub、Mercurial、Subversion等)进行整合而设计的,单独拿出来是没有意义的。
你可以通过下面的接口,从一个工件(比如用户故事)找到它的修订记录。例如,如果你查询一个用户故事(FormattedID = US123):
https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?query=(FormattedID%20%3D%20US123)&fetch=true
这个查询会包含一个指向RevisionHistory对象的引用,具体内容为了简洁省略了。
RevisionHistory:
{
_ref: "https://rally1.rallydev.com/slm/webservice/v2.0/revisionhistory/19382984273",
_type: "RevisionHistory"
},
这个接口:
https://rally1.rallydev.com/slm/webservice/v2.0/revisionhistory/19382984273
返回一个修订历史对象,其中包含一个指向修订集合的引用。
{
RevisionHistory:
{
_ref: "https://rally1.rallydev.com/slm/webservice/v2.0/revisionhistory/19382984273",
_objectVersion: "3",
CreationDate: "2014-05-29T15:23:21.491Z",
ObjectID: 19382984273,
Revisions:
{
_ref: "https://rally1.rallydev.com/slm/webservice/v2.0/RevisionHistory/19382984273/Revisions",
_type: "Revision",
Count: 5
}
}
}
这里有一个修订接口的例子,进行了精简查询:
https://rally1.rallydev.com/slm/webservice/v2.0/RevisionHistory/19382984273/Revisions?fetch=RevisionNumber,User,Description,CreationDate
一般来说,查询修订历史是比较耗费资源的,我们不建议在除非特定情况下使用它们。
在v2.0版本中,为了提高性能,移除了在同一响应中返回子集合的功能。根据WS API文档,获取一个集合会返回一个对象,里面包含数量和获取集合数据的URL。如果想要获取完整的对象,需要单独发起请求。
可以查看这篇帖子,里面提到了LookbackAPI。LBAPI可以用来获取历史数据。除了AppSDK2之外,pyral或其他Rally工具包并没有内置对LookbackAPI的支持,但LBAPI是与编程语言无关的。