Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 如何通过将状态移动到其他项目来恢复丢失状态后的工作项状态_Azure Devops - Fatal编程技术网

Azure devops 如何通过将状态移动到其他项目来恢复丢失状态后的工作项状态

Azure devops 如何通过将状态移动到其他项目来恢复丢失状态后的工作项状态,azure-devops,Azure Devops,通过Azure DevOps服务,我们拆分了我们的主项目,移动了约1500个工作项/PBIs/Features/。。。去一个新项目 我们编写了一个Boards->Queries,选择all并将它们移动到新项目中 通过这样做,工作项的所有状态都被重置(ActivatedBy、ActivateDate、State、Board列)。 我们可以通过查看修订选项卡来查看旧状态 是否有方法或工具可以恢复或撤消该移动所做的更改?创建工作项的新修订版时 由于无法保证使用相同的过程,在项目之间移动会更加复杂,这意

通过Azure DevOps服务,我们拆分了我们的主项目,移动了约1500个工作项/PBIs/Features/。。。去一个新项目

我们编写了一个Boards->Queries,选择all并将它们移动到新项目中

通过这样做,工作项的所有状态都被重置(ActivatedBy、ActivateDate、State、Board列)。 我们可以通过查看修订选项卡来查看旧状态

是否有方法或工具可以恢复或撤消该移动所做的更改?

创建工作项的新修订版时

由于无法保证使用相同的过程,在项目之间移动会更加复杂,这意味着即使移动到相同的类型,也可能会丢失/添加或应用其他类型。因此,Azure DevOps会自动将状态和原因字段重置为您移动的工作项类型的默认初始值

您需要做的是检查所有已移动的工作项,并将字段恢复为以前版本的值。这可以手动完成,但通过Rest API(或Azure CLI)实现1500个工作项的自动化可能是更好的选择:

  • 获取通过搜索选择所有工作项而移动的Id列表。(,)
  • 在移动工作项之前获取修订。请特别注意
    asOf
    /
    --as-of
    参数,该参数允许您从给定日期检索工作项修订。将此设置为在从原始项目移动之前。(,)
  • 使用以前的值更新相关字段(这将在workitem上创建一个新修订,并有效地“恢复”丢失的字段(,)
  • 使用Azure CLI可能更简单一些,但REST API提供了诸如和之类的功能来优化流程,但仅针对1500项,这一点应该无关紧要。

    当创建新版本的工作项时

    在项目之间移动会更加复杂,因为无法保证使用相同的流程,这意味着即使移动到相同的类型,也可能会丢失/添加或应用其他类型。因此Azure DevOps会自动将状态和原因字段重置为移动的工作项类型的默认初始值

    您需要做的是检查所有已移动的工作项,并将字段恢复为上一版本的值。这可以手动完成,但如果有1500个工作项通过Rest API(或Azure CLI)将其自动化,则可能是更好的选择:

  • 获取通过搜索选择所有工作项而移动的Id列表。(,)
  • 在移动工作项之前获取修订。请特别注意
    asOf
    /
    --as-of
    参数,该参数允许您从给定日期检索工作项修订。将其设置为在从原始项目移动之前。(,)
  • 使用以前的值更新相关字段(这将在workitem上创建一个新修订,并有效地“恢复”丢失的字段(,)

  • 使用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迁移工具重新迁移工作项。请仔细查看文档以了解如何使用此工具