如何在gradle中获取当前的git分支?

时间:2013-02-25 06:27:59

标签: git gradle

我正在编写将应用程序部署到服务器的任务。但是,我希望此任务仅在我当前的git分支是主分支时运行。 我怎样才能获得当前的git分支?

gradle-git方法:

我知道在getWorkingBranch()任务下有一个gradle-git plugin方法GitBranchList,但我会在任何时候尝试执行

task getBranchName(type: GitBranchList) {
   print getWorkingBranch().name
}

我收到“任务尚未执行”错误。我查看了source,当没有分支集时它会抛出该错误。这是否意味着这种方法不能完全符合我的想法?我需要在某处设置分支?

2 个答案:

答案 0 :(得分:26)

您也可以在没有插件的情况下获得git branch name

def gitBranch() {
    def branch = ""
    def proc = "git rev-parse --abbrev-ref HEAD".execute()
    proc.in.eachLine { line -> branch = line }
    proc.err.eachLine { line -> println line }
    proc.waitFor()
    branch
}

请参阅:Gradle & GIT : How to map your branch to a deployment profile

答案 1 :(得分:18)

不,这并不意味着没有设置分支。这意味着该任务尚未真正执行。你要做的是在配置闭包中调用一个方法,而你可能想在任务执行后调用它。尝试将您的任务更改为:

task getBranchName(type: GitBranchList) << {
    print getWorkingBranch().name
}

使用<<添加doLast,将在执行任务后执行。