¿Los ganchos se ejecutan en el directory git o en el directory de ganchos?

Estoy escribiendo un enlace posterior a la recepción que se ve así:

#!/bin/sh # this file is in root.git/hooks # deprecated # git --work-tree=~/public_html --git-dir=~/root.git checkout -f cd /home/username/www git add -A . git commit -m "automated commit on push" # cd /home/username/root.git/hooks # cd /home/username/root.git #git pull x #git push y 

Me cambio a un repository git para add / commit y necesito volver a mi repository desnudo y hacer un pull / push .

Debería volver al directory de ganchos o simplemente al directory git.

  1. No vuelves a ningún lado. El directory de trabajo del process de enlace se olvida cuando finaliza el process, por lo que es totalmente irrelevante si lo cambió a algo.

  2. Si desea ejecutar commands en un repository, debe estar en el tree de trabajo si no está vacío o en el repository si está vacío. Donde estabas antes no es relevante.

  3. Los ganchos se ejecutan en ese directory donde puedes emitir commands directamente sobre él.

  4. Si necesita ir temporalmente a algún lugar, le recomendaría usar subshell:

     ( cd /home/username/www git commit -a -m "automated commit on push" ) # You are back wherever you were, before you opened the parenthesis 

    Eso deja la secuencia de commands reubicable (tanto como sea posible, todavía necesita la ruta al otro repository).

  5. En realidad, GIT_DIR también se establece en el gancho y tendrá que desactivarlo además de cambiar el directory si desea trabajar en un repository diferente:

     ( cd /home/username/www unset GIT_DIR ... ) 

    El entorno revertirá después de ) tal como lo hace el directory de trabajo actual.