O gitlab já usa o gancho pós-recebimento internamente. você pode mexer com esse script e chamar seu gancho também, mas a partir dos documentos, parece que a maneira "oficial" seria usar "ganchos da web", ou seja, deixe o gitlab ligar para seu servidor da web em pós-recebimento e, em seguida, para o seu servidor da web puxa o repositório. Eu mesmo não tentei, mas como ninguém respondeu até agora, pensei em indicá-lo nessa direção:
para ativar os ganchos da web, entre na página principal do seu projeto e selecione ganchos no canto superior direito, abaixo do menu principal. ( http://yourgitlab.example.net/yourproject/hooks ). há um exemplo e documentos vinculados nessa página ( http://yourgitlab.example.net/help/web_hooks ).
editar://
Eu tentei esta manhã. Aqui está um exemplo de script php. Ele pressupõe que você já clonou o repositório e o servidor da web possui todas as permissões / chaves ssh necessárias.
<?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);
}