Sto cercando scrivere uno script di shell che fa la seguente:Script di shell per controllare git per le modifiche e quindi eseguire il loop dei file modificati?
- Controlli repository git a distanza per eventuali modifiche per tirare.
- Se sono presenti modifiche nel repository git remoto, effettuare tali modifiche.
- Loop attraverso i file nuovi o modificati.
Attraverso la mia ricerca ho trovato alcuni dei comandi necessari per fare queste cose, ma non sono stato in grado di farli lavorare insieme in uno script di shell.
Ecco uno script con alcuni dei comandi che ho:
#!/bin/sh
#Check if there are any changed files
git --git-dir="/dir/.git" fetch origin
if git --git-dir="/dir/.git" log HEAD..origin/master --oneline
then
#Output the modified files from the last pull
git --git-dir="/dir/.git" diff --name-status ORIG_HEAD..
fi
Le cose che non sono stato in grado di ottenere a lavorare con i comandi di questo script sono:
- Il se la dichiarazione per verificare se ci sono cambiamenti o non sempre è vera. Ho provato se le istruzioni con altri comandi git e sono anche sempre vere. Sembra che git non funzioni come i normali comandi di shell in cui ottieni una risposta 0 o 1. Come posso ottenere un comando git come questo o altri comandi git per restituire le risposte corrette in un'istruzione if?
- Come posso assegnare le variabili in uscita dal comando per vedere i file modificati in una matrice in modo che possa scorrere attraverso di essi utilizzando un for?
Se i comandi del mio script non funzionano davvero in questo caso, qual è il modo migliore per farlo?
Modifica: Scusa dovrei essere più chiaro quando eseguo il loop dei file modificati Ho bisogno di estrarre le modifiche dal repository remoto prima di scorrere i file in modo tale che quando lavoro con questi file ho le ultime modifiche.
Ciao Mark. Grazie per la tua risposta. Ho provato a eseguire il tuo script ma sto ricevendo il seguente errore: errore di sintassi vicino a un token imprevisto '<'' done <<(git status --porcelain)'. Qualche idea su quale dovrebbe essere la sintassi corretta? – startupsmith
Sei sicuro di stare usando bash? –
Ciao Mark. Hai ragione, non stavo usando bash ... funziona ora. Devo approfondire ulteriormente questo aspetto, ma da quello che posso vedere questo script eseguirà il ciclo dei file modificati prima che siano stati estratti dal repository remoto? – startupsmith