Как пакетно обновить несколько рабочих элементов в TFS

StackOverflow https://stackoverflow.com/questions/1210571

Вопрос

Мне нужно обновить одно и то же поле до одного и того же значения для сотен рабочих элементов в TFS.Есть ли способ сделать это пакетно, а не обновлять их вручную по одному?

Это было полезно?

Решение

Вы можете сделать это в Эксель:

  1. Откройте рабочие элементы в Excel с помощью:
    • щелкните правой кнопкой мыши запрос в Team Explorer -> открыть в Excel
    • выберите несколько рабочих элементов на панели результатов WIT, затем щелкните правой кнопкой мыши -> открыть в Excel
    • загрузите Excel, используйте команду -> Импорт, чтобы загрузить предопределенный запрос.
    • откройте файл *.xls, который уже привязан к TFS
  2. Вносите массовые изменения
  3. Нажмите кнопку «Опубликовать» на ленте «Команда».

enter image description here

Полная документация:Управление рабочими элементами в Excel (страница обзора;много-много ссылок внутри)

Вы также можете массово редактировать в веб-интерфейсе.

командная строка Windows:

REM make Martin Woodward fix all my bugs
tfpt query /format:id "TeamProject\public\My Work Items" | 
    tfpt workitem /update @ /fields:"Assigned To=Martin"

PowerShell:

# make Bill & Steve happy
$tfs = tfserver -path . -all
$items = $tfs.wit.Query("
    SELECT id FROM workitems 
    WHERE [Created By] IN ('bill gates', 'steve ballmer')") | 
    % {
        $_.Open()
        $_.Fields["priority"].value = 1
        $_
    }
# note: this will be much faster than tfpt since it's only one server call
$tfs.wit.BatchSave($items)   

Другие советы

$secpasswd = ConvertTo-SecureString $TfsPasswd -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($TfsUserName, $secpasswd)
Connect-TfsTeamProjectCollection -Server $TfsServerUrl -Collection $TfsCollection -Credential $mycreds
#Get-TfsTeamProject

Connect-TfsTeamProject -Project $TfsProjectName
$workItems  = Get-TfsWorkItem -Filter "[System.WorkItemType] = 'Bug' AND [System.AssignedTo] = '$TfsUserName'"
foreach ($workItem in $workItems)
{
    $tpc = $workItem.Store.TeamProjectCollection
    $id = $workItem.Id
    $store = $tpc.GetService([type]'Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore')
    $wi = $store.GetWorkItem($id)
    $projectName = $wi.Project.Name
    foreach($fldName in $Fields.Keys)
    {
        $wi.Fields[$fldName].Value = $Fields[$fldName]
    }
    $wi.Save()
}

Подробный сценарий можно загрузить с процедуры пакетного обновления нескольких рабочих элементов. в TFS с помощью PowerShell

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top