You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps中将旧Area Path下的所有Bug复制到新版本的Area Path?

嘿,这个需求我太熟了——很多团队在版本迭代时都会遇到要把旧版本Bug迁移到新版本Area Path的情况,Azure DevOps里有几种实用的方法,我给你详细说说:

方法一:Azure DevOps门户内的批量复制操作(适合少量Bug)

这是最直观的方式,不用写代码就能搞定:

  • 第一步:打开你的项目,进入Boards > Queries,新建一个Flat list类型的查询,筛选条件设置为:工作项类型是Bug,Area Path等于你要复制的旧路径
  • 第二步:运行查询后,用Ctrl+A选中所有目标Bug(或者手动勾选需要的)
  • 第三步:点击顶部菜单栏的Actions > Copy selected work items
  • 第四步:在弹出的配置窗口里,把Area Path改成你的新版本路径,还可以根据需要调整状态、指派等其他字段,确认后点击「复制」即可
方法二:PowerShell脚本批量复制(适合大量Bug)

如果Bug数量几十上百个,手动操作效率太低,用脚本批量处理更省心:

  • 首先安装Azure DevOps PowerShell模块,打开PowerShell执行:
    Install-Module -Name Az.DevOps -Force -AllowClobber
    
  • 连接到你的Azure DevOps组织:
    Connect-AzDevOps -OrganizationUrl "https://dev.azure.com/你的组织名称" -ProjectName "你的项目名称"
    
  • 执行复制脚本(记得替换占位符):
    # 配置参数
    $oldAreaPath = "旧Area Path,比如MyApp/V1.0"
    $newAreaPath = "新Area Path,比如MyApp/V2.0"
    $projectName = "你的项目名称"
    
    # 查询旧路径下的所有Bug
    $targetBugs = Get-AzDevOpsWorkItem -Project $projectName -Query "SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.AreaPath] = '$oldAreaPath'"
    
    # 逐个复制Bug到新路径
    foreach ($bug in $targetBugs) {
        Copy-AzDevOpsWorkItem -WorkItemId $bug.Id -Project $projectName -AreaPath $newAreaPath -KeepLink $true
        Write-Host "已完成复制:Bug ID $($bug.Id)"
    }
    
    小贴士:-KeepLink $true会在原Bug和复制后的新Bug之间创建链接,方便追踪关联关系,不需要的话可以改成$false
方法三:Azure DevOps REST API自定义处理(适合复杂需求)

如果需要更灵活的逻辑(比如只复制「Active」状态的Bug,或者批量修改多个字段),REST API是最佳选择:

  • 第一步:先获取个人访问令牌(PAT):在Azure DevOps右上角头像→Personal access tokens,创建一个拥有「Work Items」读写权限的令牌
  • 第二步:查询旧Area Path的Bug列表,发送GET请求:
    GET https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/wit/wiql?api-version=7.1-preview.2
    
    请求体(JSON格式):
    {
      "query": "SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.AreaPath] = '旧Area Path'"
    }
    
  • 第三步:遍历返回的Bug ID,发送复制请求(POST):
    POST https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/wit/workitems/${BugID}?api-version=7.1-preview.3
    
    请求头添加:Content-Type: application/json-patch+json,请求体示例:
    [
      {
        "op": "add",
        "path": "/fields/System.AreaPath",
        "value": "新Area Path"
      },
      // 可选:修改状态为New
      {
        "op": "add",
        "path": "/fields/System.State",
        "value": "New"
      }
    ]
    

注意事项

  • 复制前建议先测试1-2个Bug,确保字段映射正确,不会遗漏附件、评论等关键信息
  • 复制后的Bug是全新的工作项,原Bug不会被删除,若需归档原Bug,可在复制完成后批量修改其状态为「Closed」或「Resolved」

内容的提问来源于stack exchange,提问作者Yonatan Alshech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:54:06