¿Cómo puedo hacer que un gancho de Git local ejecute un ejecutable de Windows y esperar a que vuelva?

Estoy trabajando en un entorno de Windows. Tengo un repository de Git y estoy escribiendo un gancho precompromiso personalizado. Estoy mucho más cómodo escribiendo una aplicación de console rápida y sucia en C # que tratando de descubrir la syntax de Perl, así que esa es la ruta que seguiré.

Mi file .git/hooks/precommit tiene este aspecto:

 #!/bin/sh start MyHelperApp.exe 

Y esto funciona de alguna manera. Como puede ver, tengo una aplicación comstackda de ayuda en la raíz del directory repo (y está .gitignore'd), y esto de hecho inicia mi aplicación con éxito cuando llamo a git commit . Sin embargo, no espera a que termine el process ni parece importarle cuál es el código de retorno del process. Supongo que esto es porque el start es asynchronous y devuelve un código de salida 0 cada vez.

Tengo motivos para sospechar que el process de start que se llama aquí no es el command de start nativo de Windows, porque traté de cambiarlo para start /wait MyHelperApp.exe pero esto no tuvo ningún efecto. También al tratar de llamar a MyHelperApp.exe directamente se MyHelperApp.exe un error de "command no encontrado", y también lo hace el cambio de start de call . Sospecho que el inicio es un command bash emulado y está ejecutando la versión bash en lugar de la versión de Windows.

De todos modos, mi aplicación de ayuda devuelve diferentes códigos de salida dependiendo de las diferentes condiciones, por lo que sería genial si se pudieran utilizar. (Los enganches de precompilation fallan si un progtwig en el script devuelve un código de salida además de cero.) ¿Cómo puedo utilizar esto?

Llame al ejecutable directamente, no use start .

También al intentar llamar a MyHelperApp.exe directamente, se MyHelperApp.exe un error de "command no encontrado"

Si la variable PATH no contiene a . input, bash no searchá en el directory actual para encontrar ejecutables. Llame a ./MyHelperApp.exe para que sea explícito que debe ejecutarse desde el directory actual.