2014-10-29 7 views
9

Könnte euch erklären, warum mirWie führe ich den Befehl git von build.gradle aus?

def getBuildSuffix() { 
    return 'git rev-list HEAD | wc -l | tr -d " "'.execute().text.trim() 
} 

kehrt nichts unter Berücksichtigung es Daten gibt, wenn Sie git Befehl von einer Befehlszeile ausführen:

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

Ich Ausführung nur ein Git sein kann Befehl von meinem build.gradle falsch?

Antwort

18

Pipe ist ein Shell-Funktion, so dass Sie gehen müssen wie:

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

Du hast meinen Tag gerettet! – cesards

+0

Das gleiche hier! Danke dafür: D – Thram

4

Sie müssen Ihre eigenen Rohrleitungen oder Call by Shell (siehe Antwort von @topr) tun. siehe den Fehler:

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 

Verwendung groovy zB:

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

Wenn Sie dies tun für Android Sie benötigt Integer.parseInt(), wie folgt:

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

Verwandte Themen