gitlab đã sử dụng hook sau nhận trong nội bộ. bạn có thể tìm hiểu về tập lệnh đó và gọi hook của bạn, nhưng từ các tài liệu có vẻ như cách "chính thức" sẽ là sử dụng "web-hook", tức là hãy để gitlab gọi máy chủ web của bạn sau khi nhận và máy chủ web của bạn kéo kho lưu trữ. Tôi đã không thử điều này bản thân mình, nhưng cho đến nay không ai trả lời, tôi nghĩ tôi sẽ chỉ cho bạn theo hướng đó:
để bật hook web đi vào trang chính của dự án của bạn và chọn hook từ trên cùng bên phải, bên dưới menu chính. ( http://yourgitlab.example.net/yourproject/hooks ). có một ví dụ & tài liệu được liên kết từ trang đó ( http://yourgitlab.example.net/help/web_hooks ).
chỉnh sửa://
Tôi đã thử nó sáng nay. Dưới đây là một ví dụ về tập lệnh php. Nó giả định rằng bạn đã nhân bản repo và máy chủ web có tất cả các quyền / khóa ssh cần thiết được thiết lập.
<?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);
}