[英]How to get current changesetid on tfs build server?
我需要在TFS生成服务器上的Assemblyversions中包含changesetid。 我创建了Powershell脚本,该脚本更新了[AssembliVersion]属性,所有的assemblyinfo.cs。
如何在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,而不是正在构建的ID
如果您是在门禁值机范围内执行此操作,并且尚未提交更改,则不会有“当前”更改集。 我们执行类似的操作,但是在提交构建后,此时只需查询buildserver即可获取最新的构建,如下所示;
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方法 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.