Cómo acceder al file de repository con GIT en el gancho posterior a la recepción

Tengo este escenario con GIT:

Quiero "hacer algo" con un file específico cuando se cambia en un impulso. Por ejemplo, un file .sql se debe volcar en una database si se modifica.

Estoy usando el gancho 'post-receive' en GIT con una statement como esta:

DUMP=$(git diff-tree --name-only -r -z master dump.sql); if [ -n "$DUMP" ]; then // using the new dump.sql fi 

¿Cómo puedo acceder al nuevo dump.sql simplemente presionado desde el gancho?

Puede recuperar el file dump.sql de revision $ rev usando:

 git cat-file blob $rev:dump.sql 

El gancho posterior a la recepción también se llama para cosas distintas a empujar al maestro … con suerte, tiene un control en algún lugar que está procesando la reference maestra actualizada. Como una cuestión de estilo, usaría el valor de nueva revisión pasado al gancho en lugar de hacer reference al maestro directamente desde el gancho.

Normalmente escribo un gancho post-recepción como este:

 while read oldrev newrev refname; do if [ "$refname" = "refs/heads/master" ]; then # definitely updating master; $oldrev and $newrev encompass the changes if git diff-tree --name-only -r -z $oldrev $newrev dump.sql; then # dump.sql changed... fi fi done 

Es importante destacar que esto también hace frente a un solo envío que envía varias confirmaciones para dominar de una vez; el command que mostró en la pregunta solo analizó el último compromiso en el maestro.