我四处搜索,发现了一些相关主题,但它们都与限制文件大小或存在配额有关。
我用 Gitolite 构建了一个 Git 服务器,供学生分享课程项目。这一切都在服务器上的一个用户名 git 下使用通配符存储库“projects/Creator/[a-zA-Z0-9].*”运行。存储库定义了 WRITERS 和 READERS,因此用户可以修改谁可以写入和读取其存储库。
实现了 SSH 密钥文件,因此用户可以通过以下方式创建存储库:
git clone git@servername.edu:projects/bob/project1 git clone git@xervername.edu:projects/bob/someotherproj
等等。“bob”文件夹是在他们第一次执行 git clone 时创建的(这是他们的用户名)。
我的问题是,作为学生,会有滥用行为,我需要限制“bob”文件夹的大小。磁盘配额不起作用,因为所有文件夹和文件都归 git 所有,而这已经受到限制。
我可能可以重新设计它以从他们的 Linux 主文件夹为他们的项目提供服务,从而能够使用磁盘配额,但是,我宁愿不必重新设计这个服务器,因为我已经让它工作了。
本质上,我一直在寻找一个类似于这个粗略的 shell 脚本的钩子:
foldersize=`du -s $GITPATH/projects/$USERNAME`
if [ $foldersize > 250000 ]; then
echo "Quota Exceeded"
exit 1
fi
我知道可以编写服务器端钩子,我想在开始雕刻之前查看轮子是否已经创建。那么,有任何限制存储库大小的钩子吗?