如何从build.gradle执行git命令?

时间:2014-10-29 14:42:44

标签: groovy gradle

你们能否澄清原因

def getBuildSuffix() {
  return 'git rev-list HEAD | wc -l | tr -d " "'.execute().text.trim()
}
考虑到从命令行运行git命令时有数据,

对我没有任何回报:

prototype (master) $ git rev-list HEAD | wc -l | tr -d " "
72

可能我只是以错误的方式从build.gradle执行git命令?

3 个答案:

答案 0 :(得分:22)

Pipe是一个shell功能,所以你需要像:

['sh', '-c', 'git rev-list HEAD | wc -l | tr -d " "'].execute().text.trim()

答案 1 :(得分:4)

您必须自己管道或通过shell调用(请参阅@topr的回答)。看到错误:

def p1 = 'git rev-list HEAD | wc -l | tr -d " "'.execute()
p1.waitFor()
println p1.exitValue()
//-> 128
println p1.errorStream.text
//-> fatal: ambiguous argument '|': unknown revision or path not in the working tree.
//-> Use '--' to separate paths from revisions, like this:
//-> 'git <command> [<revision>...] -- [<file>...]'
println p1.text 
//-> nothing

使用groovy例如:

println 'git rev-list HEAD'.execute().text.split().size()

答案 2 :(得分:0)

如果您在Android上执行此操作,则需要Integer.parseInt(),如下所示:

Integer.parseInt(['sh','-c','git rev-list --all --count'] .execute().text.trim())