Busqué y encontré algunos temas relacionados, pero todos estaban relacionados con la limitación del tamaño de los archivos o las preocupaciones de que hubiera cuotas.¿Hay un gancho lateral del servidor Git para poner la cuota en los tamaños del repositorio?
Creé un servidor Git con Gitolite como lugar para que los estudiantes compartan proyectos del curso. Todo funciona bajo un nombre de usuario en el servidor, git, con un repositorio comodín "projects/Creator/[a-zA-Z0-9]. *". Los repositorios tienen ESCRITORES y LECTORES definidos para que el usuario pueda modificar quién puede escribir y leer su repositorio.
archivos de claves SSH se implementan de modo que el usuario sólo puede crear un repositorio por:
git [email protected] clon: proyectos/bob/proyecto1 git [email protected] clon: proyectos/bob/someotherproj
y así sucesivamente. La carpeta "bob" se crea la primera vez que hacen el clon git (es su nombre de usuario).
Mi problema es que, al ser alumnos, habrá abuso y tendré que limitar el tamaño de la carpeta "bob". Las cuotas de disco no funcionan porque todas las carpetas y archivos son propiedad de git, y eso ya es limitado.
Probablemente pueda volver a diseñar esto para servir sus proyectos desde sus carpetas de inicio de Linux y así poder usar cuotas de disco, sin embargo, preferiría no tener que volver a diseñar este servidor ahora que lo tengo funcionando.
Esencialmente, que estaba buscando un gancho que hizo algo como esto shell script áspera:
foldersize=`du -s $GITPATH/projects/$USERNAME`
if [ $foldersize > 250000 ]; then
echo "Quota Exceeded"
exit 1
fi
entiendo que hay ganchos del lado del servidor que se pueden escribir, quería ver si la rueda ya fue creado antes de empezar a tallarlo. Entonces, ¿algún gancho para limitar el tamaño del repositorio?
De acuerdo con la página de manual, el enlace previo a la recepción se puede pasar por alto con una opción --noverify ... El problema con el soporte del sistema de archivos es que todo está bajo un UID con gitolite. Supongo que tendré que volver a diseñar la solución para usar las cuotas de usuarios del nivel de sistema de archivos y varias cuentas ... y pensé que ya casi había terminado con este servidor ... suspiro. –
Es por eso que mencioné las cuotas por directorio; esto resuelve el problema de "todo es un usuario". – larsks
También tenga en cuenta que '--no-verify' es un argumento para' commit', no para 'push'. Un usuario remoto no puede anular su gancho 'pre-receive'. – larsks