【问题标题】:How to get current changesetid on tfs build server?如何在 tfs 构建服务器上获取当前的 changesetid?
【发布时间】:2016-02-05 12:57:39
【问题描述】:

我需要在 TFS 构建服务器上的 assemblyversions 中包含 changesetid。我创建了更新 [AssembliVersion] 属性的 powershell 脚本,全部是 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

【问题讨论】:

    标签: powershell tfs tfsbuild


    【解决方案1】:

    如果您在门控签入的范围内执行此操作并且尚未提交更改,则不会有“当前”更改集。我们做了类似的事情,但是在构建提交之后,然后简单地查询构建服务器以获取最新的构建,如下所示;

    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();
    

    看起来和你的代码几乎一样。

    【讨论】:

    • 我不在门控签到范围内这样做。问题是,当这个脚本执行时,可能已经有更新的变更集作为正在构建的变更集
    【解决方案2】:

    如果您使用的是新的构建系统,您应该能够使用环境变量 $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

    【讨论】:

      【解决方案3】:

      要从指定的构建中获取相关的变更集摘要,您可以使用InformationNodeConverters.GetAssociatedChangesets Method

      【讨论】:

      • 可以,但是我还是不知道怎么用。如何获取 IBuildDetail 的实例?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      相关资源
      最近更新 更多