Ho uno script di shell in cui voglio controllare uno dei miei repository git. Voglio sapere se quel repos ha tutto impegnato e se viene spinto a padroneggiare. Prima di questo test, faccio git fetch per assicurarmi di avere le ultime modifiche.Verifica che il repository git locale abbia eseguito il commit e sia stato inviato al master
ho trovato il modo per verificare se il repo ha alcune modifiche non:
if ! git --work-tree=$HOME/git/project --git-dir=$HOME/git/project/.git diff-index --quiet HEAD --; then
echo "Has some changes";
fi
Ma questa non è l'unica cosa che ho bisogno. Voglio anche assicurarmi che tutti i miei commit locali su vengano inviati al master.
Qual è il modo più semplice per farlo?
Mark Longair's e la tua soluzione sembrano mancare i file non tracciati. Quindi, a seconda del tuo scopo, la directory può ancora essere considerata sporca. –
@ vlad-didenko forse non ti sturo, ma la mia soluzione mostra file non tracciati. Screenshot: http://upload.bessarabov.ru/bessarabov/LbYgP0Daba-oJ5vCDa8Wag8a5H8.png e il codice che lo rende: https://metacpan.org/source/BESSARABV/App-IsGitSynced-1.0.0/bin/is_git_synced# L84 – bessarabov
Sì, credo che non sia abbastanza chiaro. I comandi "git diff --exit-code && git diff --cached --exit-code" non catturano i file non tracciati. La tua soluzione è una grande (relativamente) sceneggiatura che non è certo una risposta alla domanda "metodo più semplice per fare" sopra - una domanda che richiede chiaramente alcuni semplici comandi. Come qualcuno che è venuto qui dalla ricerca non vedo una risposta - come passare attraverso un considerevole script perl non è una (buona) risposta. Forse è lì, ma non qui :) –