Được rồi, đây là kịch bản: Một nhóm các nhà phát triển muốn đảm bảo tất cả mã mới khớp với các tiêu chuẩn mã hóa đã xác định và tất cả các bài kiểm tra đơn vị đều được gửi trước khi cam kết được chấp nhận. Đây là thủ thuật, tất cả các thử nghiệm cần chạy trên một máy kiểm tra chuyên dụng và chúng tôi không có quyền truy cập để sửa đổi máy chủ git vì vậy việc này phải được thực hiện bằng cách sử dụng một móc nối cục bộ trên mỗi máy dev.Thực thi các tiêu chuẩn mã trong git trước khi cam kết được chấp nhận
Mặc dù thông số kỹ thuật khá nghiêm ngặt (ví dụ: chúng tôi không chuyển sang cửa sổ hoặc lật đổ), đây là vấn đề thực tế nên có sự linh hoạt nếu bạn có giải pháp gần như phù hợp.
- Chúng tôi đang sử dụng Git và * nix.
- Mã được cập nhật cần phải được gửi đến một máy chủ khác để chạy bộ thử nghiệm.
- Danh sách các tệp đã sửa đổi cần phải được cung cấp để đảm bảo chúng khớp với chuẩn mã hóa.
- Đó là một codebase khá lớn, vì vậy chúng tôi nên gửi lượng thông tin nhỏ nhất cần thiết để đảm bảo các bản sao giống hệt của codebase.
- Nếu các kiểm tra thất bại, một thông báo cần được hiển thị với lỗi và cam kết sẽ bị chặn.
- Giả sử chúng tôi tin tưởng nhóm dev của chúng tôi và không sao cho phép thử nghiệm được bỏ qua với tùy chọn
--no-verify
.
Câu hỏi: Cách tốt nhất để máy chủ thử nghiệm đồng bộ hóa với môi trường cục bộ để chạy thử nghiệm là gì? Một số loại hash-to-hash phù hợp với một bản vá git cho cam kết mới? Bỏ qua Git hoàn toàn và chỉ cần làm một rsync? Cái gì khác hoàn toàn?
Cập nhật 8/7/13: Tôi tự bắn vào chân bằng cách nhắc đến repo từ xa. Điểm không phải là để ngăn chặn các mã được đẩy đến repo chia sẻ/từ xa, nó để ngăn chặn các cam kết địa phương thậm chí xảy ra. Có hay không điều này sẽ được coi là một thực hành tốt nhất là không thực sự là điểm trong trường hợp này, vì điều này là cụ thể cho một nhóm nhỏ các nhà phát triển tất cả những người muốn chức năng chính xác này. Câu hỏi đặt ra là cách tốt nhất để đạt được mục tiêu.
Đây có phải là yêu cầu kéo về cơ bản không? (Cấp, bạn có thể không được sử dụng GitHub về dự án này, nhưng bạn gần như chắc chắn có thể làm điều gì đó tương tự.) – Ajedi32
yêu cầu Pull là dành cho xem xét mã, vâng, nhưng ý tưởng ở đây là mã mà nên thậm chí không được cam kết với repo trừ khi nó đi một đánh giá đầu tiên, tự động. –
Nhiều dự án Github cũng sử dụng một máy chủ tích hợp liên tục như Travis để chạy thử nghiệm trên các mã trong các yêu cầu kéo và báo cáo kết quả - vì vậy nó không chỉ dành riêng cho mã số nhận xét. Ngoài ra, mã trong yêu cầu kéo không phải là kỹ thuật trong repo cho đến khi yêu cầu kéo được sáp nhập. Đó là lý do tại sao nó được gọi là yêu cầu ['pull'] (https://www.kernel.org/pub/software/scm/git/docs/git-pull.html). – Ajedi32