2017-10-19 4 views
1

Je travaille avec jenkins et git. Je veux avoir une différence entre le commit actuel et le commit avant le courant. Je veux que ces identifiants de commit actuels et précédents soient générés lors de l'exécution. J'utilise ceci dans un fichier batch, mais il n'exécute pas les commandes git rev-parse et stocke l'identifiant hash dans prev_com et curr_com. Toute aide est appréciée.Stockez Git ID dans une variable dans un script batch

cd "C:\Users\TF255014\Eclipse Projects Repo\Hello World" 
set prev_com=${git rev-parse @~} 
set curr_com=${git rev-parse HEAD} 
echo %prev_com% 
git diff %prev_com% %curr_com% 
+0

Vous ne pouvez pas affecter la sortie d'une commande à une variable avec l'instruction set comme vous pouvez en BASH. Ouvrez une invite cmd et tapez: 'set /?'. Vous ne verrez aucune syntaxe pour le faire. – Squashman

Répondre

1

On dirait que vous mélangez bash et batch scripts. Si vous êtes sous Windows, vous pouvez assigner la sortie d'une commande à une variable en utilisant les fichiers « temporaires »:

git rev-parse @~ > prev_com.txt 
set /p prev_com=<prev_com.txt 
git rev-parse HEAD > curr_com.txt 
set /p curr_com=<curr_com.txt 

ou pour les boucles:

for /f %%i in ('git rev-parse @~') do set prev_com=%%i 
for /f %%i in ('git rev-parse HEAD') do set curr_com=%%i 

Ce qui suit fonctionnerait dans un script bash:

prev_com=$(git rev-parse @~) 

En dehors de cela, je ne pense pas que vous avez besoin des deux variables. Vous pouvez simplement lancer:

git show HEAD 

ou, pour obtenir la diff seulement:

git show --pretty= HEAD 
+0

Merci beaucoup. Je suis nouveau dans les scripts par lots, ce qui complique la syntaxe avec les scripts bash. Merci encore :) – user3768904