Sto creando uno script di distribuzione per un'applicazione zend. Lo script è quasi finito solo per verificare che esista un tag all'interno del repository per forzare i tag sul team. Attualmente ho il seguente codice:Script di shell - tentativo di convalidare se esiste un tag git in un repository git in una istruzione if/else
# Fist update the repo to make sure all the tags are in
cd /git/repo/path
git pull
# Check if the tag exists in the rev-list.
# If it exists output should be zero,
# else an error will be shown which will go to the else statement.
if [ -z "'cd /git/repo/path && git rev-list $1..'" ]; then
echo "gogo"
else
echo "No or no correct GIT tag found"
exit
fi
In attesa di vostri commenti!
Aggiornamento
Quando eseguo quanto segue nella riga di comando:
cd /git/repo/path && git rev-list v1.4..
ottengo NO uscita, che è buono. Anche se quando eseguo:
cd /git/repo/path && git rev-list **BLA**..
ottengo un errore di , che è ancora buono:
fatal: ambiguous argument 'BLA..': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Il -z nella dichiarazione dice, se pungiglione è vuota allora ... In altre parole , funziona bene tramite la riga di comando. Anche se quando uso lo stesso comando in uno script di shell all'interno di un'istruzione non sembra funzionare.
[ -z "'cd /git/repo/path && git rev-list $1..'" ]
Questo metodo ciò che ha ispirato da Validate if commit exists
Update 2
ho trovato il problema:
Vedi Using if elif fi in shell scripts>
sh è interpretare il & & come un guscio operatore. Modificarlo a -a, che è [s 'operatore congiunzione:
[ "$ arg1" = "$ arg2" -a "$ arg1" = "$ arg3"] Inoltre, si dovrebbe sempre citare le variabili , perché [si confonde quando si omettono gli argomenti .
in altre parole, ho cambiato il &&
a ;
e semplificato la condizione. Ora funziona bello.
if cd /path/to/repo ; git rev-list $1.. >/dev/null
then
echo "gogo"
else
echo "WRONG"
exit
fi
C'è qualcosa di specifico si vuole chiedere? – CharlesB
Sì, non funziona .... – Kim
Quindi si prega di aggiungere dettagli su ciò che non funziona, è più facile per le persone aiutare – CharlesB