在TFS构建中获取git分支名称

时间:2014-01-22 18:08:21

标签: git msbuild tfs2013

我有一个CI构建定义(TFS 2013),它由几个分支的提交触发(它是一个git存储库)。我想在构建过程中使用分支名称将结果复制到正确的位置。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

制作您自己的CodeActivity,就像这样...

您需要IBuildDetail BuildDetail作为InArgument。

string branch = null;
string commit;

var environmentVariable = BuildDetail.Get(context);
if (environmentVariable != null && !BuildSourceVersion.TryParseGit(environmentVariable.SourceGetVersion, out branch, out commit))
{
    var defaultSourceProvider = environmentVariable.BuildDefinition.GetDefaultSourceProvider();
    if (BuildSourceProviders.IsGit(defaultSourceProvider.Name))
    {
        branch = BuildSourceProviders.GetProperty(defaultSourceProvider.Fields, BuildSourceProviders.GitProperties.DefaultBranch);
    }
}

if (string.IsNullOrEmpty(branch))
{
    throw new Exception("Could not find Branch");
}

Branch.Set(context, branch.Substring(branch.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1));

答案 1 :(得分:1)

在构建期间可以访问整个.git文件夹,因此我可以使用PowerShell查看文件.git/HEAD。可能只有提交哈希(分离的HEAD制度),然后需要一些更多的git调用来找出我真正的位置。总而言之,另一个答案可能更清晰。