gitlab ya usa el gancho posterior a la recepción internamente. podría jugar con ese script y llamar a su gancho también, pero desde los documentos parece que la forma "oficial" sería usar "web-hooks", es decir, deje que gitlab llame a su servidor web en la recepción posterior y luego a su servidor web tira del repositorio. No lo he intentado yo mismo, pero como nadie respondió hasta ahora, pensé en señalarle en esa dirección:
para habilitar los enlaces web, vaya a la página principal de su proyecto y seleccione enlaces desde la parte superior derecha, debajo del menú principal. ( http://yourgitlab.example.net/yourproject/hooks ). hay un ejemplo y documentos vinculados desde esa página ( http://yourgitlab.example.net/help/web_hooks ).
editar://
Lo intenté esta mañana. Aquí hay un ejemplo de script php. Se supone que ya ha clonado el repositorio y el servidor web tiene todos los permisos necesarios / claves ssh configuradas.
<?php
$mirrordir='/srv/http/gitlabhooktest/gitmirror';
$gitdir=$mirrordir."/.git";
$json= file_get_contents('php://input');
#error_log($json);
$jsarr=json_decode($json,true);
#error_log(print_r($jsarr,true));
$branch=$jsarr["ref"];
if($branch=='refs/heads/master'){
$cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull";
#error_log($cmd);
exec($cmd);
}