git lfs 预接收钩子以防止存储库中不需要的文件

git lfs pre-receive hooks to prevent unwanted files in repository

是否可以编写服务器端预接收挂钩以防止大型或二进制文件通过提交添加到存储库?

在本地,我可以通过以下方式将文件类型添加到 .git 属性文件来控制 git-lfs 行为:

    git lfs track "*.zip"

这会导致如果添加新的 zip 文件,它将由 git-lfs 管理,而不是提交到 git 对象存储。

git-p4 甚至允许我设置文件大小阈值,例如:

    largeFileCompressedThreshold = 1m
    largeFileThreshold = 50m

对于多个开发人员和开发环境,可能会发生这样的情况,一个人添加这样一个二进制文件而不配置 git-lfs,因此这样一个文件可以直接提交给 git。 我想要一个拒绝此类提交并提供有意义消息的服务器端挂钩,以便开发人员可以轻松识别问题。

理想情况下,此接收挂钩将使用现有的 git 功能来解析例如.git属性而不是手动解析在脚本中提交的所有文件。

这可以使用 CheckFile plugin from the Git-Hooks 框架的 sizelimit 指令来完成。我们使用它并且效果非常好。