tipos tag remove practices etiquetas crear best git git-post-receive

tag - Cómo probar ganchos git



git tag best practices (2)

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

Estoy escribiendo un gancho de git posterior a la recepción bastante involucrado y quiero saber cuál es la mejor manera de probarlo. Actualmente mi proceso es:

  • hacer cambios para post-recibir en un repositorio "remoto" ficticio
  • hacer un cambio a un repositorio local ficticio
  • cometer cambio en el repositorio local ficticio
  • empujar cambio a repositorio remoto ficticio

¿Hay alguna forma más fácil de probar esto? Idealmente se vería como:

  • hacer cambios para post-recibir en un repositorio ficticio
  • emita un comando "mágico" para probar después de recibir

¿Quizás puedo "reeditar" un empuje anterior o hacer que el repo remoto actúe como si acabara de recibir un empuje con un hash específico?


Escriba un enganche que solo 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 volver a emitir el mismo impulso.


Responde a esta pregunta de cuatro años.

Si desea probar el gancho en el entorno local, le doy los comandos detallados para el seguimiento, uso 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.

Debe ser libre de ejecutar git push , ya que las actualizaciones solo se /tmp/hook_test/git.git repositorio local /tmp/hook_test/git.git