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

Azure DevOps中如何完整复制Feature-UserStory-Task层级的工作项树?

在Azure DevOps中复制完整工作项树(Feature-UserStory-Task)的解决方案

一、调整复制功能的层级深度设置

默认的「创建复制工作项」功能可能限制了层级抓取深度,你可以通过以下步骤修复:

  • 打开目标Feature工作项,点击右上角的「...」菜单,选择「创建复制工作项」
  • 在弹出的复制配置窗口中,找到「要包含的链接层级」选项,将默认的「1级」修改为「所有层级」
  • 确认字段复制、链接保留等其他设置后,点击「创建」,此时就能连同Feature下的UserStory以及嵌套的Task一起完整复制

二、用PowerShell脚本实现批量层级复制(适合复杂场景)

如果图形界面设置后仍有遗漏,可以借助Azure DevOps REST API结合脚本实现精准的层级复制:
核心思路是递归遍历源Feature的所有子工作项(包括嵌套的Task),依次创建副本并重建父子链接关系。

示例核心脚本片段:

# 配置基础信息
$orgUrl = "https://dev.azure.com/你的组织名"
$projectName = "你的项目名"
$pat = "你的个人访问令牌(需含工作项读写权限)"
$sourceFeatureId = 1234 # 要复制的源Feature ID

# 初始化请求头
$headers = @{Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))}

# 递归复制工作项树
function Copy-WorkItemHierarchy {
    param($sourceItem, $parentCopyId)
    # 创建当前工作项副本
    $copyPayload = @(
        @{op = "add"; path = "/fields/System.Title"; value = "[复制] $($sourceItem.fields.'System.Title')"}
        # 可按需添加其他需要复制的字段,如描述、标签等
    )
    $newItem = Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/`$($sourceItem.fields.'System.WorkItemType')?api-version=7.1-preview.3" -Method Post -Headers $headers -Body ($copyPayload | ConvertTo-Json) -ContentType "application/json-patch+json"
    
    # 与父副本建立链接
    if ($parentCopyId) {
        $linkPayload = @(
            @{op = "add"; path = "/relations/-"; value = @{rel = "System.LinkTypes.Hierarchy-Reverse"; url = "$orgUrl/_apis/wit/workitems/$parentCopyId"}}
        )
        Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/$($newItem.id)?api-version=7.1-preview.3" -Method Patch -Headers $headers -Body ($linkPayload | ConvertTo-Json) -ContentType "application/json-patch+json"
    }
    
    # 递归处理子工作项
    foreach ($relation in $sourceItem.relations) {
        if ($relation.rel -eq "System.LinkTypes.Hierarchy-Forward") {
            $childId = [int]($relation.url -split "/")[-1]
            $childItem = Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/$childId?`$expand=relations&api-version=7.1-preview.3" -Headers $headers
            Copy-WorkItemHierarchy -sourceItem $childItem -parentCopyId $newItem.id
        }
    }
}

# 启动复制流程
$sourceFeature = Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/$sourceFeatureId?`$expand=relations&api-version=7.1-preview.3" -Headers $headers
Copy-WorkItemHierarchy -sourceItem $sourceFeature -parentCopyId $null

三、使用Azure DevOps市场扩展

如果不想编写脚本,可以在Azure DevOps市场中选择成熟的第三方扩展:

  • Copy Work Items Batch:支持批量复制工作项及所有层级子项,可自定义字段、链接的复制规则
  • Work Item Tree Copy:专门针对层级工作项复制的工具,操作界面直观,一键完成完整树复制

安装扩展后,按照指引选择目标Feature即可实现完整层级的复制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:10:17