Мне нужно обновить одно и то же поле до того же значения для сотен рабочих элементов в TFS. Есть ли способ сделать это в пакете вместо того, чтобы вручную обновлять их вручную?
Как выполнить пакетное обновление нескольких рабочих элементов в TFS
Ответ 1
Вы можете сделать это в Excel:
- Откройте рабочие элементы в Excel через:
- щелкните правой кнопкой мыши запрос в Team Explorer → открыть в Excel
- multi-select некоторые рабочие элементы в области результатов WIT, затем щелкните правой кнопкой мыши → открыть в Excel
- загрузите Excel, используйте команду → Импорт для загрузки предопределенного запроса.
- откройте файл *.xls, который уже привязан к TFS
- Сделайте свои массовые изменения
- Нажмите кнопку "Опубликовать" на ленте "Команда"
Полная документация: Управление рабочими элементами в 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 only one server call
$tfs.wit.BatchSave($items)
Ответ 2
$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()
}
Вы можете скачать деталь script из как пакетное обновление нескольких рабочих элементов в TFS с помощью PowerShell