2016-02-16 45 views
0

我正在使用powershell創建一個電子郵件實用程序以跟蹤自上一版本以來發生的變更集。TFS以編程方式獲取最新標籤

我試圖尋找使用tf labels命令指定的工作區中創建的最後一個標籤和最新的變更

我使用的代碼

$latestChangeset = Get-TfsItemHistory -HistoryItem $workSpacePath -Recurse -Server $tfs -Stopafter 1 

我試圖檢索最新的變更之間的變更但我找不到任何方式使它只返回特定工作區的最新構建標籤

回答

-1

這可能是因爲TFS中的標籤不像以前的源代碼存儲庫裏一樣ke VSS。看看這個answer鏈接的博客。

引述博客文章:

標籤SourceSafe中總是「時間點」的標籤。您通常在某個時間點爲某棵樹添加標籤,這意味着該樹在同一時間點的所有內容的標籤。

Team Foundation中,標籤更強大。他們可以從不同的時間點獲得標籤中每個文件的版本,而不是單個時間點。

因此,將標籤與變更集相關聯會產生問題。

1

您可以在PowerShell中涉及TFS API以獲取最新的標籤。

$CollectionUrl = "http://xxx.xxx.xxx.xxx:8080/tfs/defaultcollection" 
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($CollectionUrl) 
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]) 
$labels = $vcs.QueryLabels('*','$/ProjectName',$null,$true) 
$lastlabel = $labels | Select-Object -last 1 
write-host $lastlabel.Name 
write-host $lastlabel.LabelID