Nel mio crontab, ho la seguente linea:git commit non funziona da un job cron, anche se git pull funziona
48 14 * * * bash /home/erelsgl/git/erel-sites/add-commit-push.bash "from home" 2&>1 >> /home/erelsgl/logs/backup_from_home.log
Lo script fa quello che suggerisce il nome - aggiungere, impegnarsi e spingere:
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd $DIR
echo --------------------
date
echo == add ==
/usr/bin/git add -A
echo == commit ==
/usr/bin/git commit -m "$1"
echo == pull ==
/usr/bin/git pull
echo == push ==
/usr/bin/git push
Come si è visto nel file di registro, il "commit" non fa nulla, mentre il "pull" funziona bene:
Fri Oct 23 14:48:01 IDT 2015
== add ==
== commit ==
== pull ==
Already up-to-date.
== push ==
ho eseguito le s esatte Comando ame, un minuto dopo, dalla riga di comando, ed ha ottenuto il seguente registro, il che significa che il commit è accaduto:
Fri Oct 23 14:49:31 IDT 2015
== add ==
== commit ==
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
== pull ==
Already up-to-date.
== push ==
Qual è il problema nella gestione di commettere da un lavoro cron?
NOTA: ho anche fatto lo stesso esperimento con un effettivo cambiamento in un file di prova. Ho scoperto che, in effetti, il commesso non è accaduto dal crontab (nulla è stato spinto a monte), ma è accaduto dalla riga di comando.
'git push' richiede un file .gitconfig per impostare le cose come l'autore e-mail. git non spingerà senza quelle impostazioni presenti.Sembra che tu stia scorrendo attraverso cron - git non possa localizzare questo file perché cron viene eseguito in un ambiente diverso. Potresti anche provare ad aggiungere '2> & 1' allo script di cron in modo da ottenere anche l'output di stderr nel tuo log. – Protagonist
Dovresti aggiungere '2> & 1' come dice @Protagonist, probabilmente c'è un errore con git commit, o' $ 1' è vuoto e git si lamenta che il messaggio è vuoto, nessun file è stato aggiunto e git si lamenta perché il commit è vuoto – edi9999
Ho aggiunto "2> & 1". Ora, quando corro dalla linea di comando, c'è effettivamente un messaggio che dice che non c'è nulla da impegnare. Ma quando viene eseguito da crontab, non appare alcun messaggio (vedi la mia modifica). Sembra che "git commit" non funzioni affatto! perché? –