tipos tag sirve remove qué para oneline nos log hace etiquetas cuando creamos commits commands git cron

git - remove - ¿para qué nos sirve el sha-1 cuando creamos tags?



Git auto-pull usando cronjob (5)

Estaba intentando crear un cronjob con una tarea para hacer un git pull cada minuto para mantener mi sitio de producción sincronizado con mi rama principal.

El usuario del sistema nobody debe realizar la extracción de git debido al problema de permisos. Sin embargo, parece que la cuenta de nobody no está permitida ejecutar comandos. Entonces tengo que crear tareas como el usuario root .

La entrada de crontab que probé:

*/1 * * * * su -s /bin/sh nobody -c ''cd ~heilee/www && git pull -q origin master'' >> ~/git.log

No funciona, y no sé cómo depurarlo.

¿Alguien podría ayudar?

ACTUALIZACIÓN1: el comando de git pull es correcto. Puedo ejecutarlo sin errores.


Creo un pequeño script para manejarlo. Luego puedo usar el comando by crontab

crontab -e 0 2 * * * cd /root && ./gitpull.sh > /root/log/cron.log 2>&1 &

Aquí están los gitpull.sh :

#!/bin/bash source /etc/profile PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH export TERM=${TERM:-dumb} #---------------------------------------- # Please set the following variable section # Please set up working directories, use'',''split # eg:path="/root/test/path1,/root/test/path2" path="" #---------------------------------------- # Do not edit the following section # Check if user is root [ $(id -u) != "0" ] && { echo "${CFAILURE}Error: You must run this script as root.${CEND}"; exit 1; } 2>&1 # Check if directory path exists if [[ "${path}" = "" ]]; then echo "${CFAILURE}Error: You must set the correct directory path.Exit.${CEND}" 2>&1 exit 1 fi # Check if command git exists if ! [ -x "$(command -v git)" ]; then echo "${CFAILURE}Error: You may not install the git.Exit.${CEND}" 2>&1 exit 1 fi # Check where is command git git_path=`which git` # Start to deal the set dir OLD_IFS="$IFS" IFS="," dir=($path) IFS="$OLD_IFS" echo "Start to execute this script." 2>&1 for every_dir in ${dir[@]} do cd ${every_dir} work_dir=`pwd` echo "---------------------------------" 2>&1 echo "Start to deal" ${work_dir} 2>&1 ${git_path} pull echo "---------------------------------" 2>&1 done echo "All done,thanks for your use." 2>&1

Tenemos que establecer el directorio de trabajo


Si bien es necesario que averigüe cómo hacer que la actualización funcione en primer lugar, sería mucho mejor usar un gancho de la corriente ascendente para hacerlo funcionar. Puedes hacer esto simplemente con curl desde un enganche post-commit o si estás usando github, solo usa un gancho post-receive en su lado.


Solución:

*/1 * * * * su -s /bin/sh nobody -c ''cd ~dstrt/www && /usr/local/bin/git -q pull origin master''


#!/bin/bash cd /home/your_folder/your_folder && /usr/bin/git pull [email protected]:your_user/your_file.git

eso ha estado usando y trabajado


*/1 * * * * su -s /bin/sh nobody -c ''cd /home/heilee/src/project && /usr/bin/git pull origin master''

Esto corrige un par de errores que impidieron que la respuesta aceptada funcionara en mi sistema (servidor Ubuntu> 10.04). El cambio de clave parece ser el -q después de la pull lugar de antes. No notará que su extracción no funciona hasta que /var/log/syslog archivo /var/log/syslog o intente ejecutar su código de producción no actualizado.