2011-10-13 44 views
59

我如何找出我目前變更在我的本地工作區?獲取當前變更ID在工作區TFS

當然,我可以選擇一個文件並查看它的歷史。但是,如果該文件最近未更新,則其變更集可能比同一解決方案中最近更新的文件早。

一個可能的錯誤,我們可以利用的是我們看待歷史上的解決方案文件,但解決方案文件很少更改,除非您要添加一個新的項目/製作解決方案級的變化。

最終找出我需要記住的是改變了最新的文件,並查看他們的歷史變更。

有沒有更好的方法來做到這一點?

+0

哪個版本的TFS的? –

+0

爲什麼你想知道你目前的變更集? –

+0

當您的工作空間不代表變更集時會發生什麼?考慮你已經映射了$/A,並且你已經檢索了變更集A,並且映射了$/B,並且你已經獲取了變更集B.你的工作空間在哪個變更集? –

回答

0

如果你想使用PowerShell(see also;相當於回答@kroonwijk):

  1. 使管理單元(TFS一次,如果沒有的話)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. 使用TFS cmdlet來獲取當前的變更ID

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

0

常見的答案,使用tf.exe history . /r直接的工作,但可能是可怕的慢。在我們的情況下需要10-15秒。 我現在使用兩階段檢查,首先檢查一些任意文件的修訂(我正在使用根文件夾中的文件)。

使用PowerShell:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\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秒。

據我瞭解有沒有缺點或限制,但我想這可能是一個小倉庫慢。 - 我很高興知道。