Я пытаюсь выяснить способ узнать, какие файлы были затронуты объектом работы в 2008 TFS.
Я понимаю, что это - дублирование вопроса, который кто-то еще уже задает здесь - Представление список всех файлов, измененных как часть Workitem в TFS, но это осталось без ответа, и я был, прочь и на, ища это некоторое время.
Я понимаю, может просмотреть вкладку ссылок объекта работы и затем просмотреть каждый changeset для наблюдения файлов, которые были изменены. Но, объект работы очень вероятно закончится со многими changesets, связанными с ним, и я хотел бы рассмотреть файлы, измененные как часть объекта работы, но я чувствую, что вероятность пропавших без вести файла или два очень высока, если я должен полагаться на рассмотрение каждого из 100 + changesets индивидуально.
Кто-либо знает о способе выполнить это? Заранее спасибо за любую справку или руководство.
Похоже на работу для Powershell ...
function Get-TfsItem([int] $workItemNumber)
{
Get-TfsServer njtfs -all |
foreach { $_.wit.GetWorkItem($workItemNumber) } |
foreach { $_.Links } |
foreach { ([regex]'vstfs:///VersionControl/Changeset/(\d+)').matches($_.LinkedArtifactUri) } |
foreach { $_.groups[1].value } |
Get-TfsChangeset |
Select-TfsItem |
Sort Path -Unique
}
первые несколько строк выглядят некрасиво. Мы должны напрямую обратиться к API веб-службы, поскольку командлеты TFS не охватывают систему отслеживания ошибок. А возвращаемые нами объекты требуют некоторой любви к регулярным выражениям, прежде чем они сделают то, что нам нужно. Снова и снова переход к «foreach» - это неудачная идиома Powershell, которая возникает, когда вы связываете недружественный API с неудачным оператором проекции. (Лично я использую свою замену , но вы не можете полагаться на это.)
Последние 3 строки не требуют пояснений, если мои TFS Power Cmdlets установлены и делают свою работу.