2014-10-29 17 views
9

Czy wy wyjaśnić dlaczegoJak wykonać polecenie git z build.gradle?

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

powraca nic mi uwzględnieniem są dane, gdy polecenie git uruchomić z wiersza poleceń:

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

Może jestem po prostu wykonywania git Polecenie od mojego build.gradle w niewłaściwy sposób?

Odpowiedz

18

Rura jest cechą powłoki, więc trzeba iść jak:

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

Uratowałeś mój dzień! – cesards

+0

To samo tutaj! Dzięki za to: D – Thram

4

Musisz wykonać własną linię lub zadzwonić przez powłokę (zobacz odpowiedź z @topr). zobacz błąd:

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 

Używaj groovy np

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

Jeśli robisz to dla Androida potrzebujesz Integer.parseInt(), tak jak:

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

Powiązane problemy