没有简单的方法可以恢复更改的字段。
如果您打算使用 rest api 来恢复更改的字段。你可以使用下面的rest api。
1,你可以使用Wiql - Query By Wiqlrest api 来获取你所有的工作项目,如 danielorn 提到的。见this thread for example如何编写脚本调用wiql rest api。
2、拿到所有工作项后。您可以通过rev 字段获取它们的当前版本。然后你可以使用Revisions - Get rest api通过当前的rev - 1获取之前版本的原始字段值。
3,然后你可以使用update rest api来恢复工作项。
但是,使用Azure DevOps Migration Tools 迁移您的工作项有一个更简单的解决方案。
首先,您可以删除从主项目移至新项目的所有工作项。
然后,您可以使用 Azure DevOps 迁移工具重新迁移工作项。请仔细查看文档以了解如何使用此工具。见下例:
1、创建自定义迁移跟踪字段
在使用迁移工具之前。您需要为新项目中的工作项类型创建自定义迁移跟踪字段。此字段将用于跟踪主项目中的原始工作项。在您的项目过程中查看here to add a custom field。
然后您可以在configraton.json中设置自定义跟踪字段(即ReflectedWorkItemId2),如下所示:
迁移完成后。您将看到在自定义字段中设置了源工作项 url:
2,在FieldMaps部分映射字段和值(例如区域路径,迭代路径)。请参见下面的示例。
{
"$type": "MultiValueConditionalMapConfig",
"WorkItemTypeName": "*",
"sourceFieldsAndValues": {
"System.AreaPath": "MainProject\\Development Team"
},
"targetFieldsAndValues": {
"System.AreaPath": "NewProject"
}
},
{
"$type": "FieldValueMapConfig",
"WorkItemTypeName": "*",
"sourceField": "System.IterationPath",
"targetField": "System.IterationPath",
"defaultValue": "TestProjectAccess",
"valueMapping": {
"MainProject\\iteration 3": "NewProject\\Iteration 3",
"MainProject\\iteration 5": "NewProject\\Iteration 2"
}
}
3,映射状态
{
"$type": "FieldValueMapConfig",
"WorkItemTypeName": "*",
"sourceField": "System.State",
"targetField": "System.State",
"defaultValue": "New",
"valueMapping": {
"Approved": "New",
"New": "New",
"Developing": "Active",
"To Do": "New",
"Done": "Closed",
"Removed": "Removed"
}
},
4,您可以在WorkItemMigrationConfig 处理器中的WIQLQueryBit 字段仅迁移您想要的工作项。
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
....
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.Id] IN (5,9)",
"WIQLOrderBit": "[System.ChangedDate] desc",
...
}
]