gitlab вже використовує гачок після отримання. Ви можете пограбувати з цим сценарієм і зателефонувати на гачок, але з документів це виглядає так, що "офіційним" способом було б використання "веб-гачків", тобто нехай gitlab зателефонує своєму веб-серверу після отримання, а ваш веб-сервер потім тягне сховище. Я сам цього не пробував, але оскільки ніхто до цього часу не відповів, я думав, що я вкажу тебе в цьому напрямку:
щоб увімкнути веб-гачки, перейдіть на головну сторінку вашого проекту та виберіть гачки вгорі праворуч, під головним меню. ( http://yourgitlab.example.net/yourproject/hooks ). є приклад та документи, пов’язані із цієї сторінки ( http://yourgitlab.example.net/help/web_hooks ).
редагувати: //
Я спробував це сьогодні вранці. Ось приклад сценарію php. Це передбачає, що ви вже клонували репо і веб-сервер має всі необхідні дозволи / ssh ключі.
<?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);
}