Bạn có thể sử dụng một Git trước cam kết nối để làm cái này. Tôi đã thiết lập các móc trước khi cam kết để kiểm tra các câu lệnh gỡ lỗi, v.v.
Các móc bên khách hàng như thế này thuộc về thư mục .git/hooks. Nhưng kể từ khi bạn không thể cam kết bất cứ điều gì trong .git repo vào kiểm soát phiên bản bạn đang loại bị mắc kẹt.
Điều bạn cần làm là giữ lệnh trình bao kiểm tra tính chính xác trong một số thư mục trong repo git của bạn, nói thư mục tools
cấp cao nhất.
Sau đó, "chỉ" nói với mọi người để cài đặt nó thông qua:
chmod u+x tools/precommit-checks.sh
ln -s $PWD/tools/precommit-checks.sh .git/hooks/pre-commit
và, giả định rằng tất cả mọi người cài đặt nó, bạn có thể đã kiểm tra như bạn yêu cầu.
Có lẽ một cách tốt hơn là chỉ cần nắm bắt phía máy chủ này: có một số loại máy chủ tích hợp liên tục kéo các cam kết mới nhất từ repo Github của bạn và kiểm tra codebase.
Không, nó sẽ không cung cấp cho bạn khả năng "từ chối đẩy" mà bạn muốn.
Giả sử bạn đã lưu trữ git repo của mình, cũng có một nếp nhăn khác: Tôi nghĩ móc nhận trước trên máy chủ sẽ treo khách hàng cho đến khi móc mất. (Điều này là được ghi lại là đúng cho móc sau khi nhận, vì vậy tôi đoán nó cũng đúng ở đây). Vì vậy, nếu các bài kiểm tra CI mất 2 phút một số nhà phát triển đang gõ git push
và chờ 2 phút để bàn điều khiển của họ làm bất cứ điều gì một lần nữa.
Vì vậy, có thể tốt hơn để thực hiện phân tích đẩy bài đăng bằng máy chủ CI hoặc các bài kiểm tra chất lượng khác.
Github (dịch vụ lưu trữ git) không cho phép bạn thêm móc tùy ý vào các bản sao lưu trữ trên máy chủ của bạn. Thiết lập các móc trên phiên bản * cục bộ * của kho lưu trữ của bạn chắc chắn là có thể, nhưng sau đó câu hỏi không phải là Github cụ thể :) – Gareth
Vì vậy, cách duy nhất để thêm móc là sử dụng những cái được xác định trước bởi [GitHub] (http : //developer.github.com/v3/repos/hooks/#create-a-hook)? –
Trước tiên, hãy lưu ý rằng việc đẩy trước được chạy trên máy đang đẩy và điều đó sẽ không bao giờ là Github. Sự kiện 'push' mà Github cung cấp một Web Hook cho thực sự được kích hoạt như là một post-receive, như nó nói ở đầu trang mà bạn đã liên kết tới. Vì vậy, nó chỉ thực sự có thể được sử dụng cho các thông báo – Gareth