如何使用Rally Python API获取故事变更列表?

2 投票
1 回答
1238 浏览
提问于 2025-04-18 10:46

如何获取在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 个回答

2

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是与编程语言无关的。

撰写回答