Przeszukałem i znalazłem kilka powiązanych tematów, ale wszystkie były związane z ograniczaniem rozmiarów plików lub obawami, że były przydziały.Czy istnieje boczny hak serwera Git do umieszczania limitu na rozmiarach repozytoriów?
Zbudowałem serwer Git z Gitolite, aby umożliwić uczniom dzielenie się projektami kursów. Wszystko działa pod jedną nazwą użytkownika na serwerze, git, z repozytoriami z dziką kartą "projects/Creator/[a-zA-Z0-9].". Repozytoria mają zdefiniowane PISARKI i CZYTNIKI, dzięki czemu użytkownik może modyfikować, kto może pisać i czytać swoje repozytorium.
pliki kluczy SSH są realizowane dzięki czemu użytkownik może po prostu stworzyć repozytorium poprzez:
git clone [email protected]: Projekty/bob/project1 git clone [email protected]: Projekty/bob/someotherproj
i tak dalej. Folder "Bob" jest tworzony przy pierwszym wykonaniu klona git (jest to nazwa użytkownika).
Mój problem polega na tym, że będąc uczniami, będą nadużycia i będę musiał ograniczyć rozmiar folderu "Bob". Przydziały dysku nie działają, ponieważ wszystkie foldery i pliki są własnością git, a to już jest ograniczone.
Potrafię przerobić to na pewnie, aby obsługiwać ich projekty z folderów domowych Linuksa, a tym samym móc korzystać z przydziałów dyskowych, jednak wolałbym nie zmieniać tego serwera teraz, gdy go mam.
Zasadniczo szukałem haka, że zrobił coś takiego szorstkiego skryptem powłoki:
foldersize=`du -s $GITPATH/projects/$USERNAME`
if [ $foldersize > 250000 ]; then
echo "Quota Exceeded"
exit 1
fi
rozumiem istnieją haki stronie serwera, które mogą być napisane, chciałem sprawdzić, czy koła został już utworzony zanim zacząłem go wyrzeźbić. A więc jakieś haczyki ograniczające rozmiar repozytorium?
Zgodnie ze stroną man, hak pre-receive może być ominięty z opcją --noverify ... Problem z obsługą systemów plików jest taki, że wszystko jest pod jednym UID z gitolite. Chyba będę musiał ponownie zaprojektować rozwiązanie, aby użyć przydziałów na poziomie systemu plików i wielu kont ... i pomyślałem, że prawie skończyłem z tym serwerem ... westchnienie. –
Dlatego wspomniałem o limitach na numery katalogowe; rozwiązuje to problem "wszystko jest jednym użytkownikiem". – larsks
Należy również zauważyć, że '--no-verify' jest argumentem dla' commit', a nie 'push'. Zdalny użytkownik nie może przesłonić haka 'pre-receive'. – larsks