2016-02-05 80 views
0

我需要在TFS構建服務器的assemblyversions中包含changesetid。我創建了更新[AssembliVersion]屬性的所有assemblyinfo.cs的powershell腳本。如何在tfs構建服務器上獲取當前changesetid?

如何獲取tfs中文件夾的當前變更集?

目前我有這樣的事情:

function GetLatestChangeset{ 
    Param([string]$projectDir) 

    $changesetId = Get-TfsItemHistory $projectDir -Recurse -version:W | % ChangesetId | sort -Descending 
    if ($changesetId.Count -eq 0){ 
     return 0 
    } 
    return $changesetId[0] 
} 

但它返回最新變更ID,而不是一個正在興建

回答

0

如果您在門控簽入的範圍和內這樣做變更尚未提交,則不會有「當前」變更集。我們做類似的事情,但是在構建完成之後,然後簡單地查詢構建服務器以獲得如下的最新構建;

var buildDetail = context.GetExtension<IBuildDetail>(); 
    var vcserver = buildDetail.BuildServer.TeamProjectCollection.GetService<VersionControlServer>(); 

    var queryHistoryResult = vcserver 
           .QueryHistory(versionControlPath, VersionSpec.Latest, 0, 
               RecursionType.Full, null, null, null, 1, 
               true, false) 
           .Cast<Changeset>() 
           .ToList(); 

    if (!queryHistoryResult.Any()) 
    { 
     throw new ChangesetNotFoundException("GetLatestChangesetActivity: No current changeset available."); 
    } 

    var changeset = queryHistoryResult.First(); 

它看起來幾乎與您的代碼相同。

+0

我不在門控簽入範圍內執行。問題是,當這個腳本執行時,可能會有更新的變更集,因爲正在構建的變更集已經是 – Liero