2016-05-03 5 views
1

Ich habe ein Git-Befehl die neueste SHA des laufenden Repo wie folgt zu erhalten:Wie bekomme ich die Ausgabe von einem Aufruf an GIT in eine Variable in einem Batch-Skript?

git log --pretty=format:"%H" -n 1 

ich eine Windows-Batch-Skript habe ich dies in verwenden möchten, wie folgt:

SET CURRENT_SHA=??? 

Aber ich weiß nicht, wie ich die Ausgabe dieses Aufrufs dazu bringen kann, in die Variable hineinzugelangen, damit ich sie nutzen kann.

bearbeiten

Ich habe versucht, die folgenden (die die allgemeinen Ratschläge zu sein scheint, dass ich hier gelesen habe und anderswo):

SETLOCAL ENABLEDELAYEDEXPANSION 
FOR /F "tokens=* USEBACKQ" %%i IN (`git log --pretty=format:"%H" -n 1`) DO (SET CURRENT_SHA=%%i) 
ECHO Current Sha: %CURRENT_SHA% 

..aber ich:

fatal: failed to stat 'format:i) ECHO Current Sha: 48bce83e800b96607afb2a387c4fcd7b0b0f037e 

Also vermutlich gibt es ein Problem mit den Zitaten?

+2

Ich glaube, Sie brauchen den Prozentsatz zu verdoppeln Escape für '% H' und dann wieder, weil es in einer Batch-Datei ist. – Duncan

+0

Das und die Flucht der '=' war das Ticket. –

Antwort

1

Ich habe nicht ein Windows-System praktisch zu testen, aber ich denke, etwas in diese Richtung:

FOR /F %i IN (`git log --pretty=format:"%%H" -n 1`) DO SET CURRENT_SHA=%i 

Beachten Sie, dass das „% H“ entkommen werden muss, aber diese Zeile in einem verwenden, Batch-Datei müssen Sie auch doppelt alles entkommen. Möglicherweise müssen Sie die doppelten Anführungszeichen auch mit ^ umgehen. Ich denke, das sollte funktionieren:

SETLOCAL ENABLEDELAYEDEXPANSION 
for /f "tokens=* USEBACKQ" %%a in (`git log --pretty^=format:"%%H" -n 1`) do (SET CURRENT_SHA=%%a) 
ECHO Current Sha: %CURRENT_SHA% 

Aber wirklich, wenn Sie Shell-Programmierung tun wollen in Windows nur Powershell verwenden, und dann können Sie tun:

$CURRENT_SHA=git log --pretty=format:"%H" -n 1 
+0

Sie Sir, sind eine Legende. Ich habe es endlich mit 'git log --pretty^= format:" %% H "-n 1' arbeiten lassen. Es stellte sich heraus, dass es das Gleichheitszeichen und ein zusätzliches'% 'war –

Verwandte Themen