Azure devops 如何通过将状态移动到其他项目来恢复丢失状态后的工作项状态
通过Azure DevOps服务,我们拆分了我们的主项目,移动了约1500个工作项/PBIs/Features/。。。去一个新项目 我们编写了一个Boards->Queries,选择all并将它们移动到新项目中 通过这样做,工作项的所有状态都被重置(ActivatedBy、ActivateDate、State、Board列)。 我们可以通过查看修订选项卡来查看旧状态 是否有方法或工具可以恢复或撤消该移动所做的更改?创建工作项的新修订版时 由于无法保证使用相同的过程,在项目之间移动会更加复杂,这意味着即使移动到相同的类型,也可能会丢失/添加或应用其他类型。因此,Azure DevOps会自动将状态和原因字段重置为您移动的工作项类型的默认初始值 您需要做的是检查所有已移动的工作项,并将字段恢复为以前版本的值。这可以手动完成,但通过Rest API(或Azure CLI)实现1500个工作项的自动化可能是更好的选择:Azure devops 如何通过将状态移动到其他项目来恢复丢失状态后的工作项状态,azure-devops,Azure Devops,通过Azure DevOps服务,我们拆分了我们的主项目,移动了约1500个工作项/PBIs/Features/。。。去一个新项目 我们编写了一个Boards->Queries,选择all并将它们移动到新项目中 通过这样做,工作项的所有状态都被重置(ActivatedBy、ActivateDate、State、Board列)。 我们可以通过查看修订选项卡来查看旧状态 是否有方法或工具可以恢复或撤消该移动所做的更改?创建工作项的新修订版时 由于无法保证使用相同的过程,在项目之间移动会更加复杂,这意
asOf
/--as-of
参数,该参数允许您从给定日期检索工作项修订。将此设置为在从原始项目移动之前。(,)asOf
/--as-of
参数,该参数允许您从给定日期检索工作项修订。将其设置为在从原始项目移动之前。(,)使用Azure CLI可能更简单一些,但REST API提供了诸如和之类的功能来优化流程,但仅针对1500个不重要的项目。没有简单的方法来恢复更改的字段 如果您计划使用rest api来还原更改的字段。您可以使用以下rest api 1,您可以使用RESTAPI获取danielorn提到的所有工作项。请参阅如何编写脚本来调用wiql rest api 2,获取所有工作项后。您可以通过
rev
字段获取其当前版本。然后,您可以使用来通过当前rev-1
获取其上一版本的原始字段值
3,则可以使用恢复工作项
但是,有一个更简单的解决方案,使用迁移您的工作项
首先,可以删除从主项目移动到新项目的所有工作项
然后,您可以使用Azure DevOps迁移工具重新迁移工作项。请仔细查看文档以了解如何使用此工具。请参阅以下示例:
1、创建自定义迁移跟踪字段
在使用迁移工具之前。您需要为新项目中的工作项类型创建自定义迁移跟踪字段。此字段将用于跟踪主项目中的原始工作项。请参见项目流程中的
然后,您可以在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
processor中的WIQLQueryBit
字段中仅迁移所需的工作项
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
....
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.Id] IN (5,9)",
"WIQLOrderBit": "[System.ChangedDate] desc",
...
}
]
没有简单的方法可以恢复更改的字段 如果您计划使用rest api来还原更改的字段。您可以使用以下rest api 1,您可以使用RESTAPI获取danielorn提到的所有工作项。请参阅如何编写脚本来调用wiql rest api 2,获取所有工作项后。您可以通过
rev
字段获取其当前版本。然后,您可以使用来通过当前rev-1
获取其上一版本的原始字段值
3,则可以使用恢复工作项
但是,有一个更简单的解决方案,使用迁移您的工作项
首先,可以删除从主项目移动到新项目的所有工作项
然后,您可以使用Azure DevOps迁移工具重新迁移工作项。请仔细查看文档以了解如何使用此工具