2017-10-26 2 views
1

In unserem BitBucket funktioniert, haben wir einige Tags wie folgt aus:git beschreiben --match nicht auf Teamcity

build-0.0.4.152 
0.0.4 
build-0.0.3.151 
build-0.0.3.150 
0.0.3 

Alle Tags mit dem Präfix "build" sind von Zwischen Pre-Release-Build, wo Tags ohne Präfix sind die in der Produktion freigegebenen Versionen. Ich habe eine gradle Methode, um den neueste Produktion Tag von VCS Wurzel zu bekommen (so in diesem Fall erwarte ich 0.0.4 Tag zu bekommen):

def getVersionFromTag() { 
    def stdout = new ByteArrayOutputStream() 
    exec { 
    commandLine 'git', 'describe', '--abbrev=0', '--match="[!build]*"' 
    standardOutput = stdout 
    } 
    return stdout.toString().trim() 
} 

Lokale auf IntelliJ, die Build ist in der Lage den richtigen Tag zu bekommen. Doch auf Teamcity, zeigt es Fehler in Build-Lügt hier:

fatal: No names found, cannot describe anything. 

Wenn ich das Argument '--match="[!build]*"' von der Kommandozeile, in dem oben beschriebenen Verfahren zu entfernen, es wird funktionieren, aber es wird den letzten Tag (build-0.0 erhalten .4.152, aber nicht was ich will 0.0.4). Also denke ich, dass dieses Argument nicht in der Git-Version auf TeamCity verfügbar ist, aber es ist auf meinem eigenen Git (2.6.3.windows.1) verfügbar, stimmt das?

Bitte korrigieren Sie mich, wenn ich falsch liege und lassen Sie mich wissen, wie man das umgehen kann. Danke

+0

Der Rüttler für '--match' ein Klacks ist. 'git describe --match =" [! build] * "' bedeutet, das letzte annotierte Tag zu finden, dessen erstes Zeichen nicht 'b',' u', 'i',' l' oder 'd' ist. Vielleicht könnten Sie 'git describe --abbrev = 0 --match =" build - * "' verwenden, um das neueste Tag zu erhalten und es dann zu analysieren, um '0.0.4' zu erhalten. – ElpieKay

Antwort

0

Nach Entfernen doppelte Anführungszeichen, es funktioniert

'--match=[!build]*'

Verwandte Themen