你们能否澄清原因
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命令?
答案 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())