首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过将状态转移到不同的项目来恢复丢失状态后的WorkItem状态

如何通过将状态转移到不同的项目来恢复丢失状态后的WorkItem状态
EN

Stack Overflow用户
提问于 2021-02-04 15:44:41
回答 2查看 215关注 0票数 0

使用Azure DevOps服务,我们拆分了我们的主要项目,并移动了~1500 WorkItems/PBIs/Feature/.一个新的项目。

我们写了一个板->查询,选择了所有的,并将它们移到新的项目中。

通过这样做,重置了WorkItems的所有状态(ActivatedBy、ActivatedDate、State、Board列)。通过查看修订选项卡,我们可以看到旧的状态。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-04 16:29:43

将工作项移动到新项目创建工作项的新版本时。

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

您需要做的是遍历所有已移动的工作项,并将字段还原为上一版本的值。这可以手工完成,但是通过Rest (或Azure )实现1500个工作项的自动化可能是更好的选择:

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

使用Azure可能要简单一些,但是REST提供了像批量检索工作项批量更新工作项这样的功能来优化流程,但是只为1500个应该无关紧要的项目提供了功能。

票数 1
EN

Stack Overflow用户

发布于 2021-02-05 08:12:00

恢复已更改的字段没有简单的方法。

如果您计划使用rest来还原已更改的字段。您可以在rest下面使用。

1,您可以使用Wiql -- Wiql查询 rest来获取danielorn提到的所有工作项。请参见例如,这个线程如何编写调用wiql的脚本。

2、在你得到所有的工作项目之后。您可以通过rev字段获得它们当前的转速。然后,您可以通过当前的修订-获取rest在以前的版本中使用rev - 1获取它们的原始字段值。

3、yo可以使用更新rest来恢复工作项。

但是,通过使用Azure DevOps迁移工具迁移您的工作项,有一个更简单的解决方案。

首先,可以删除从主项目转移到新项目的所有工作项。

然后,您可以使用Azure DevOps迁移工具重新迁移工作项。请仔细查看文档,以学习如何使用此工具。见下面的例子:

1,创建自定义迁移跟踪字段

在使用迁移工具之前。您需要为新项目中的工作项类型创建自定义迁移跟踪字段。此字段将用于跟踪主项目中的原始工作项。请参阅项目过程中的在这里添加自定义字段

然后,您可以设置自定义跟踪字段(即。( ReflectedWorkItemId2 )在configraton.json中,如下所示:

在迁移完成之后。您将看到在自定义字段中设置了原始工作项url:

2、映射字段和值(例如。区域路径,迭代路径)在FieldMaps部分。见下面的例子。

代码语言:javascript
运行
复制
    {
      "$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,绘制州图

代码语言:javascript
运行
复制
{
      "$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 .您可以在WIQLQueryBit处理器中的WorkItemMigrationConfig字段中迁移所需的工作项。

代码语言:javascript
运行
复制
"Processors": [
    {
      "$type": "WorkItemMigrationConfig",
      "Enabled": true,
      ....
      "AppendMigrationToolSignatureFooter": false,
      "WIQLQueryBit": "AND [System.Id] IN (5,9)",
      "WIQLOrderBit": "[System.ChangedDate] desc",
      ...
     }
  ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66048969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档