Cập nhật tháng 8 năm 2013, với sự gitolite mới nhất: Bây giờ bạn có official specific repo hook:
nó về cơ bản chỉ là việc tạo ra một liên kết tượng trưng trong <repo.git>/hooks
trỏ đến một số tập tin bên trong $rc{LOCAL_CODE}/hooks/repo-specific
(trừ gitolite-admin
repo)
Câu trả lời gốc (
Đầu tiên, nếu bạn đang sử dụng gitolite V3, bạn có thể xác định móc bất kỳ, bao gồm móc post-receive
(ngoại trừ móc update
, xem using hooks): trước đó, với gitolite V2, móc pre-receive
đã được đặt trước.
Bây giờ bạn có thể thêm một cái móc bằng cách sao chép nó vào thư mục bản sao địa phương gitolite-admin/common/hooks
, và đẩy gitolite-admin
lại cho máy chủ gitolite: gitolite sẽ đảm bảo rằng móc được khai báo cho tất cả Repos trần nó quản lý.
Bạn cũng có thể thêm trực tiếp móc của bạn trên máy chủ tại một địa điểm riêng biệt được thiết kế bởi các biến $LOCAL_CODE
"rc
" ("rc
" có nghĩa là quy định tại gitolite.rc
config file của bạn): $LOCAL_CODE/hooks/common
. Xem "customizing gitolite".
Ý tưởng là để đảm bảo nâng cấp gitolite không xóa bất kỳ chương trình tùy chỉnh nào của bạn.
Đơn giản chỉ cần xác định một tập tin 'post-nhận', thực thi (chmod 755
), và sao chép nó vào common/hooks
thư mục bạn đã chọn (gitolite-admin
repo địa phương cộng với git push
, hoặc .gitolite
trên máy chủ, hoặc $LOCAL_CODE
trên máy chủ).
Lưu ý: thực tế là bạn không thấy tệp 'post-receive.sample
' không ngăn bạn xác định móc đó.
Nếu được thực hiện trực tiếp trên máy chủ, bạn cần chạy gitolite setup --hooks-only
để các móc tùy chỉnh của bạn được thiết lập trên tất cả repos trần.
Điều bạn sẽ không bao giờ làm là sao chép trực tiếp trên một trong các thư mục bare-repo.git/hooks
của bạn: đó là công việc của gitolite để xuất bản các móc "phổ biến" cho tất cả kho lưu trữ trần của bạn.
Bằng cách đó, bạn có thể quản lý chúng trực tiếp thông qua bất kỳ bản sao nào của gitolite-admin
repo (đẩy lùi repo đó sẽ cập nhật bất kỳ móc nào mà bạn có thể đã thay đổi).
"Tất cả repo trần" có nghĩa là móc post-receive
bạn phải biết những gì repo trần nó hoạt động trên:
Bạn có thể làm điều đó bằng checking the value of $GIT_DIR
(bộ vào thư mục gốc .git
của repo trần mà móc này đang chạy).
Cuối cùng, cho các loại hình post-receive
móc, xem "Git checkout in post-receive
hook: “Not a git repository '.'
”":
Bạn cần phải xác định GIT_DIR
và GIT_WORK_TREE
một cách rõ ràng đến điểm đến repo để cho git pull
của bạn để thành công.
GIT_WORK_TREE=/Users/me/Sites GIT_DIR=/Users/me/Sites/.git git pull
Tôi cố gắng để thiết lập repo-cụ-móc (v3) sử dụng như sau: ** 1 ** Tôi tạo ra 'LOCAL_CODE =>, 'trong "$ ENV {HOME}/gitolite/địa phương." rc ** 2 ** Tôi thêm ''repo-specific-hooks',' vào ENABLE mảng trong rc, ** 3 ** Tôi tạo thư mục «local/hooks/repo-specific /' trong gitolite-admin, cam kết và đẩy rằng ** 4 ** Tôi thêm chuỗi: 'option hook.post-receive = deploy' trong conf/gitolite.conf cho' test' repo, tạo tệp 'local/hooks/repo-specific/deploy' trong conf tập tin với 0755, và cam kết và đẩy chúng ... ** 5 ** Tôi đã thực hiện cam kết/đẩy để kiểm tra repo, móc không bị sa thải, những gì tôi đã làm sai ? –
symlink cũng không có ở đây, cố gắng chạy 'gitolite setup --hooks-only' mà không thành công. –
@eicto Tôi đã chỉnh sửa câu trả lời với liên kết đến móc cụ thể trong gitolite: đảm bảo bạn có gitolite mới nhất. – VonC