software git shell sh post-commit gitx

software - git client



Git post-commit hook como una tarea en segundo plano (4)

Tengo un script que necesito ejecutar después de comprometerme con un proyecto bajo el control de revisión de git. Por lo tanto, creé un enlace post-commit en el directorio .git de mis proyectos en el subdirectorio / hooks, lo nombré ''post-commit'' y le di el siguiente contenido:

#!/bin/sh # I am a post-commit hook /usr/local/bin/my_script &

my_script es ejecutable y se ejecuta bien en / bin / sh. De hecho, tiene un tiempo de ejecución de varios segundos, por lo que quiero que esté en segundo plano y se separa del shell actual. Es por eso que puse el final ''&'' a mi gancho.

El problema ahora es que el ''&'' parece ser ignorado. Cuando me comprometo a utilizar gitx 0.7.1 en OSX Lion, gitx se bloquea exactamente durante el período en que my_script necesita ejecutarse.

Intenté mucho, pero no obtengo el proceso en segundo plano.

¿Que esta mal aquí?


Así es como funciona para mí:

#!/bin/sh # I am a post-commit hook nohup /usr/local/bin/my_script &>/dev/null &


Si cambia #!/bin/sh a #!/bin/bash (suponiendo que está de acuerdo con el uso de bash), y usa nohup , su ejemplo debería funcionar.


También puedes usar el comando at . Puede que tengas que instalarlo primero

echo /path/to/your/executable | at now

O:

echo bash /path/to/your/script | at now

Consulte la página del manual en (1) para obtener más información acerca de at ( man at o la versión en línea )


Trate de usar nohup

#!/bin/sh # I am a post-commit hook nohup /usr/local/bin/my_script &