繁体   English   中英

如何在tfs构建服务器上获取当前的changeetid?

[英]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();

看起来与您的代码几乎相同。

如果您使用的是新的构建系统,则应该可以使用环境变量$ env:BUILD_SOURCEVERSION参见: https ://msdn.microsoft.com/zh-cn/library/vs/alm/build/scripts/variables

对于XAML构建,您可以使用TF_BUILD_SOURCEGETVERSION环境变量: https ://msdn.microsoft.com/zh-cn/library/hh850448%28v=vs.120%29.aspx

要从指定的构建中获取关联的变更集摘要,可以使用InformationNodeConverters.GetAssociatedChangesets方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM