2012-07-16 10 views
25

Dado que "probar" es un uso común para un gancho Git, mi pregunta es difícil de buscar.Cómo probar git hooks

Estoy escribiendo un gancho git post-receive bastante complicado y quiero saber cuál es la mejor manera de probarlo. Actualmente mi proceso es:

  • hacer cambios a la post-recibir en un maniquí de recompra "a distancia"
  • realiza un cambio en un repo local de maniquí
  • cometer el cambio en el muerto repo local de
  • cambio empuje para repositorio remoto ficticio

¿Hay alguna manera más fácil de probar esto? Lo ideal sería que se vería así:

  • cambio (s) marca a la post-recibir en una cesión temporal ficticia
  • cuestión comando "mágica" para poner a prueba post-recibir

tal vez pueda "reedición" un impulso anterior o hacer que el repositorio remoto actúe como si acabara de recibir un empujón con un hash específico?

Respuesta

13

Escriba un gancho que simplemente grabe sus argumentos/entorno y lo descargue en un archivo. Luego, puede volver a invocar el gancho real en su tiempo libre con el mismo entorno/argumentos y actuará como si acabara de emitir el mismo impulso exacto.

+0

Eso es más o menos lo que hice, pero en cambio inspeccionando manualmente (haciendo eco) las variables relevantes. – Errol

+9

¿Cómo sería un anzuelo como este "volquete"? –

+4

@JonWatson, acabo de utilizar 'echo $ @; echo; pwd; eco; conjunto' – Lucas

6

Responda a esta pregunta de cuatro años.

Si desea probar el gancho en el medio ambiente local, que dan las órdenes detalle para el seguimiento, utilice post-receive como muestra:

$ mkdir /tmp/hook_test 
$ cd /tmp/hook_test 

# set local git repo, where you put hooks in it. 
$ git clone --bare https://github.com/git/git.git 

# set develop environment which is cloned from the new created repo. 
$ git clone git.git repo 

# copy and rename the hook you need test to "post-receive" 
$ cd git.git/hooks 
$ cp ~/post-receive-test post-receive 

# suppose the hook script is bash script. 
# edit "post-receive" and add "set -x" to second line in it to active debug 

$ cd /tmp/hook_test/repo 
# emulate a hook trigger, do some changes, "git add" and "git commit" it 

$ git push 

# Now you should see the script "post-receive" runs automatically with debug details. 

Usted debe ser libre para correr git push, que las actualizaciones sólo están empujado al repositorio local /tmp/hook_test/git.git