我想通过 git 服务器强制执行文件排除。用户不应将不符合规则的文件推送到中央存储库。我试图在 git 服务器端的 /info/exclude 中设置规则,但它忽略了它。
有没有办法做到这一点 ?(不包括钩子解决方案)。
谢谢你的帮助
您可以要求用户添加系统配置:
git config --system core.excludesfile /share/path/to/system/wide/gitignore
这样,用户正在引用共享 (gitignore) 文件。
您可以创建一个预接收挂钩来分析推送并查找文件扩展名。
我这样做是为了避免推送二进制文件,但允许具有某些扩展名的文件(jpg、mov、mp3 等)
不包括钩子解决方案
不。Git 服务器是一个位于某个地方并且只是与之交互的裸存储库,它不关心它被推送到什么样的对象。它只是将对象复制到自己的对象数据库中,并不时更改一些引用指针。其中没有任何内容可以查看树对象并检查某些路径是否与您要排除的某些路径匹配。
做到这一点的唯一方法是使用钩子,无论是预接收还是更新钩子。您将获得新的 ref 并查看您要排除的路径是否在新提交中被触及。如果是,您可以中止推送。