簡體   English   中英

如何在TFS 2013構建中獲取當前的Git分支名稱?

[英]How to get the current Git branch name in a TFS 2013 build?

我的目標

我想在軟件包名稱中包含當前的Git分支名稱(然后通過八達通進行部署)。

如果這是TFS 2015或2017,則可以將內部版本號格式設置為內部定義中的$(SourceBranchName)-something 或者,我可以在.proj文件中使用構建變量$(BUILD_SOURCEBRANCHNAME)

但是我正在使用TFS 2013,因此這些新變量對我不可用。

我如何在TFS 2013中實現同一目標?

我嘗試過的

我試圖通過Git命令獲取分支名稱:

<Exec Command="git rev-parse --abbrev-ref HEAD" ContinueOnError="false" IgnoreExitCode="true" ConsoleToMsBuild="true">
  <Output TaskParameter="ConsoleOutput" PropertyName="CurrentGitBranch" />
</Exec>

但是,此輸出只是HEAD

我還嘗試將命令更改為:

git symbolic-ref --short HEAD

返回fatal: ref HEAD is not a symbolic ref

因此,似乎構建服務器上的已簽出存儲庫未指向任何特定分支。

正如Martin Ullrich所指出的那樣,當前的git分支存儲在構建變量TF_BUILD_SOURCEGETVERSION 存儲的值具有以下格式:

LG:refs/heads/branches/your-branch:71f12206f54365098b2d11cbf08844e82b664594

不確定LG是什么,但是第二部分是分支名稱,最后一部分是提交哈希。 解析此信息非常容易:

<Target Name="ParseGitInfo">
  <PropertyGroup>
    <GitBranch>$(TF_BUILD_SOURCEGETVERSION.Split(':')[1])</GitBranch>
    <GitBranchName>$(GitBranch.Substring($([MSBuild]::Add($(GitBranch.LastIndexOf('/')), 1))))</GitBranchName>
  </PropertyGroup>  
</Target>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM