如何在tfs构建服务器上获取当前changesetid?
我需要在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,而不是一个正在兴建
如果您在门控签入的范围和内这样做变更尚未提交,则不会有“当前”变更集。我们做类似的事情,但是在构建完成之后,然后简单地查询构建服务器以获得如下的最新构建;
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();
它看起来几乎与您的代码相同。
要从指定的构建中获取关联的变更集摘要,可以使用InformationNodeConverters.GetAssociatedChangesets Method。
,但我仍然不知道如何使用它。如何获得IBuildDetail的实例? – Liero
如果您使用的是新的构建系统,你应该能够使用环境变量$ ENV:BUILD_SOURCEVERSION 见:https://msdn.microsoft.com/en-us/library/vs/alm/build/scripts/variables
对于XAML构建,你可以使用TF_BUILD_SOURCEGETVERSION环境变量:https://msdn.microsoft.com/en-us/library/hh850448%28v=vs.120%29.aspx
我不在门控签入范围内执行。问题是,当这个脚本执行时,可能会有更新的变更集,因为正在构建的变更集已经是 – Liero