Получить текущий идентификатор набора изменений в рабочей области для TFS



Как мне выяснить, какой набор изменений у меня в настоящее время есть в моей локальной рабочей области?



конечно, я могу выбрать один файл и просмотреть его историю. Однако если этот файл не был недавно обновлен, его набор изменений, вероятно, старше, чем недавно обновленные файлы в том же решении.



одна из возможных ошибок, которые мы можем сделать, заключается в том, что мы просматриваем историю в файле решения, однако файл решения редко изменяется, если вы не добавляете новый проект / Создание уровня решения изменения.



в конце концов, чтобы выяснить набор изменений, мне нужно вспомнить, какие были последние измененные файлы и просмотреть их историю.



есть ли лучший способ сделать это?

516   3  
tfs

3 ответов:

ваш ответ находится в блоге MSDN от Buck Hodges:Как определить последний набор изменений в рабочей области

из корня (сверху) рабочей области, в cmd выполните:

tf history . /r /noprompt /stopafter:1 /version:W

общий ответ, чтобы использовать tf.exe history . /r непосредственно работает, но это может быть ужасно медленно. В нашем случае это занимает 10-15 секунд. Теперь я использую двухэтапную проверку, сначала проверяя ревизию некоторых произвольных файлов (я использую файлы в корневой папке).

С помощью powershell:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

затем выполните поиск из корня, используя флаг /r, но ограничить поиск чтобы начать с ревизии, найденной выше:

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

для нашей базы кода, это приносит вниз общее время от 10-15 до 1,4-1,5 сек.

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

Если вы хотите использовать PowerShell (см. также; эквивалентно ответу @kroonwijk):

  1. включить TFS snapin (один раз, если уже нет)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. используйте командлет tfs для получения текущего идентификатора набора изменений

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W

Comments

    Ничего не найдено.