[英]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.