Git hooks no disparando

Tengo git corriendo en una PC con Windows local y todo está funcionando perfectamente; Tengo a Jenkins y Phing trabajando para automatizar mis processs de compilation y testing, sin embargo, el paso final es iniciar automáticamente la compilation una vez que se realiza una confirmación en git.

He intentado agregar post-commit al directory .git / hooks de mi repository local con lo siguiente:

curl http://localhost:8198/git/notifyCommit?url=c:\scm\myProject 

Si ejecuto este command directamente desde la command-line, Jenkins inicia bien el trabajo, sin embargo, cuando presiono una confirmación, no se activa.

Además, he intentado agregar el script en https://github.com/MestreLion/git-tools/blob/master/git-restre-mtime al directory hooks en el repository principal llamado post-checkout para poder agregar el commit time como el file modificó el time cuando se clonó. Esto tampoco está disparando.

¿Debo hacer algo específicamente en git o mi repo para permitir que los ganchos se disparen? Si no es así, ¿hay algún lugar en particular en el que pueda comenzar la resolución de problemas?

¿Debo hacer algo específicamente en git o mi repo para permitir que los ganchos se disparen?

Principalmente:

  • asegúrese de que el gancho sea ejecutable ( chmod 775 .git/hooks/post-commit , que en realidad no es necesario en Windows)
  • asegúrese de que ' curl ' esté en %PATH% (que es el caso si su < c:\path\to\git > \ bin está en dicha ruta)
  • asegúrate de que tu testing de línea de command usó el package curl con Git, y no otro curl como el package con GoW Gnu en Windows (si tienes GoW instalado)
  • agrega, si te sirve, un #!/bin/sh al comienzo de tu script post-commit (ya que será ejecutado por msys bash)
  • el nombre debe ser post-c ommit (distingue entre mayúsculas y minúsculas, sin extensión como .sh o .bat )

La Opción menciona un problema con las comillas faltantes en torno al argumento curl .
Esto es coherente con el hecho de que se llama en una session msys bash y se aplican las reglas de cotización de shell .
Me aseguraría de que el carácter ' \ ' no se interprete también. Consulte " ¿Qué método de cotización protege qué personajes? ":

Las comillas dobles ( "..." ) protegen todo excepto las comillas dobles, las barras diagonales inversas, los signos de dólar y las comillas posteriores, hasta la siguiente comilla doble.
Se puede utilizar una barra invertida para proteger " , \ , $ o entre comillas dobles.
Un par backslash-newline desaparece por completo; una barra invertida que no precede " , \ , $ \ o nueva línea se toma literalmente.

En tu caso, usaría:

 curl "http://localhost:8198/git/notifyCommit?url=c:\\scm\\myProject" 

Resulta que necesitaba poner comillas alnetworkingedor de la URL para que establezca la ruta local correcta:

 curl "http://localhost:8198/git/notifyCommit?url=c:\scm\myProject" 

Esto ahora funciona como se esperaba.