Tôi đã tìm kiếm xung quanh và tìm thấy một số chủ đề liên quan, nhưng tất cả đều liên quan đến việc giới hạn kích thước tệp hoặc mối quan tâm có hạn ngạch.Có Git Server Side Hook để đặt hạn ngạch trên kích thước kho lưu trữ không?
Tôi đã xây dựng một máy chủ Git với Gitolite cho một nơi để sinh viên chia sẻ các dự án khóa học. Tất cả các chức năng dưới một tên người dùng trên máy chủ, git, với một kho lưu trữ thẻ hoang dã "projects/Creator/[a-zA-Z0-9]. *". Các kho lưu trữ có WRITERS và READERS được định nghĩa để người dùng có thể sửa đổi ai có thể viết và đọc kho lưu trữ của họ.
SSH file quan trọng được thực hiện vì vậy người dùng chỉ có thể tạo ra một kho lưu trữ bởi:
git clone [email protected]: dự án/bob/project1 git clone [email protected]: dự án/bob/someotherproj
v.v. Thư mục "bob" được tạo ra lần đầu tiên họ làm git clone (đó là tên người dùng của họ).
Vấn đề của tôi là, là sinh viên, sẽ có sự lạm dụng và tôi sẽ cần giới hạn kích thước của thư mục "bob". Dung lượng đĩa không hoạt động vì tất cả các thư mục và tệp được sở hữu bởi git và điều đó đã bị giới hạn. Tôi có thể tái kỹ sư này để phục vụ dự án của họ từ thư mục nhà Linux của họ và do đó có thể sử dụng hạn ngạch đĩa, tuy nhiên, tôi không muốn phải thiết kế lại máy chủ này ngay bây giờ mà tôi có nó hoạt động.
Về cơ bản, tôi đang tìm kiếm một cái móc đó đã làm một cái gì đó giống như kịch bản vỏ thô này:
foldersize=`du -s $GITPATH/projects/$USERNAME`
if [ $foldersize > 250000 ]; then
echo "Quota Exceeded"
exit 1
fi
Tôi hiểu có server side móc mà có thể được viết, tôi muốn để xem nếu bánh xe đã được tạo trước khi tôi bắt đầu khắc nó ra. Vì vậy, bất kỳ móc để hạn chế kích thước kho lưu trữ?
Theo trang người dùng, móc nhận trước có thể được bỏ qua bằng tùy chọn --noverify ... Vấn đề với hỗ trợ hệ thống tập tin là mọi thứ dưới một UID với gitolit. Đoán tôi sẽ phải tái kỹ sư giải pháp để sử dụng hạn ngạch người dùng cấp hệ thống tập tin và nhiều tài khoản ... và tôi nghĩ rằng tôi đã gần như được thực hiện với máy chủ này ... thở dài. –
Đó là lý do tại sao tôi đề cập đến hạn ngạch mỗi thư mục; điều này giải quyết vấn đề "mọi thứ chỉ là một người dùng". – larsks
Cũng lưu ý rằng '--no-verify' là đối số của' commit', không phải là 'push'. Một người dùng từ xa không thể ghi đè lên móc 'pre-receive' của bạn. – larsks