如何批量恢复被错误修改组件的WorkItems旧组件值
批量恢复Azure DevOps工作项组件的解决方案
步骤1:获取被误改的工作项ID列表
使用你提供的WIQL查询API,替换请求URL中的{queryid}为目标查询ID(该查询需筛选出所有被误修改组件的工作项),发送GET请求:
GET https://dev.azure.com/astera/Centerprise/_apis/wit/wiql/{queryid}?api-version=6.0
请求头需带上认证信息(推荐使用PAT令牌,格式为Authorization: Basic {base64编码的PAT})。解析返回的JSON数据,提取workItems数组中的id字段,得到所有需要处理的工作项ID列表。
步骤2:提取每个工作项的旧组件值
遍历步骤1得到的工作项ID,逐个调用工作项历史记录API,替换URL中的{id}为当前工作项ID:
GET https://dev.azure.com/astera/Centerprise/_apis/wit/workItems/{id}/updates?api-version=5.1
在返回的updates数组中,找到最近一次修改System.Component字段的记录(可通过fields.System.Component是否存在oldValue判断),提取oldValue字段值,这就是该工作项需要恢复的原始组件。
步骤3:批量恢复组件值
使用Azure DevOps的批量更新工作项API,构造PATCH请求来批量修改工作项组件。请求URL格式为:
PATCH https://dev.azure.com/astera/Centerprise/_apis/wit/workitemsbatch?api-version=6.0
请求头需包含Content-Type: application/json-patch+json和认证信息。请求体示例如下(建议每批处理不超过50个工作项,避免触发API速率限制):
[ { "id": 12345, "fields": { "System.Component": "原始组件名称1" } }, { "id": 67890, "fields": { "System.Component": "原始组件名称2" } } ]
关键注意事项
- 先测试再批量:先选取5-10个工作项进行测试操作,确认恢复逻辑正确后再执行全量批量操作。
- 处理API速率限制:Azure DevOps API存在请求速率限制,批量操作时需控制并发数或添加适当延迟,避免请求被拒绝。
- 提前备份:操作前导出所有目标工作项的当前状态(可通过WIQL查询导出CSV),作为回滚预案。
内容的提问来源于stack exchange,提问作者Abdur Rehman
相关产品推荐
相关产品推荐

