Tôi đang cố thực thi một số quy tắc mã hóa trong nhóm của mình. Để kết thúc, tôi đã viết một số hook phía máy khách, hoạt động tốt, nhưng bây giờ tôi muốn các kiểm tra tương tự để chạy khi một nhà phát triển đẩy các sửa đổi của họ vào kho lưu trữ trung tâm. Nhưng chúng không hoạt động.Hook máy chủ Git: nhận nội dung tệp đang được đẩy?
Dưới đây là những gì tôi muốn làm:
Tôi muốn đi qua các tập tin dòng đẩy bởi dòng, kiểm tra mã hóa ước vi phạm và nếu tôi tìm thấy bất kỳ, từ chối đẩy, cũng hiển thị số dòng + vi phạm.
Trong hook phía máy khách, tôi có thể thực hiện điều đó bằng cách gọi git diff --cached --name-status --diff-filter=AM
để lấy danh sách các tệp đã sửa đổi và git cat-file -p :filename
cho mỗi tệp được truy lục trong cuộc gọi đầu tiên để lấy toàn bộ văn bản của tệp.
Khi tôi cố gắng thực hiện tương tự trong móc nối update
phía máy chủ của tôi, tôi nhận được một chuỗi trống (cho danh sách các tệp).
Tôi cũng đã thử gọi git show --pretty="format:" --name-only newrev
(trong đó newrev là SHA tôi nhận được làm thông số cho móc cập nhật, git diff-tree -r --name-only --no-commit-id <tree-ish>
và một số thứ khác tôi tìm thấy trên mạng, nhưng tôi không thể hiểu rõ những gì đang diễn ra trên và những gì tôi nên gọi.
bạn có thể giúp tôi?
lợi ích của việc sử dụng 'git mèo file' qua 'cat' là gì. Tôi đã cố gắng tìm kiếm nhưng không thể phạt một lý do thuyết phục. –