【发布时间】:2018-12-09 07:35:41
【问题描述】:
我们要防止:
- 非常大的文本文件(每个文件 > 50MB)不会被提交到
git而不是git-lfs,因为它们会膨胀 git 历史记录。 - 问题是,其中 99% 的大小都小于 1MB,应该致力于更好地区分。
- 大小差异的原因:这些是 YAML 文件,它们支持通过 base64 编码进行二进制序列化。
- 我们不能可靠地阻止二进制序列化的原因:这是一个 Unity 项目,由于各种原因需要二进制序列化。
给定:
- GitHub 托管缺乏预接收挂钩支持。
- git-lfs 缺少文件大小属性支持。
问题:
- 我们如何可靠地防止大文件被添加到提交?
- 这可以通过 repo 中的配置文件来完成,以便所有用户都能优雅地遵循此规则吗?
- 如果不是,这是否可以通过 bash 命令别名来完成,以便受信任的用户在意外
git add一个大文件并且它未被git-lfs处理时可以看到警告消息?
(我们的环境是 macOS。我看过很多解决方案,目前没有一个能满足我们的需求)
【问题讨论】:
-
您能否包括(至少一些)您已经查看并丢弃的解决方案?我不是特别精通 git 钩子,但这听起来像是
pre-commit钩子可以处理的事情。 -
@Cyrus 我没有读过那个,谢谢,但我需要测试它是否包含 git-lfs 跟踪的文件的可能性。是的,它会阻止大文件,但 git-lfs 会在预提交之前启动,这就是问题所在。
-
@solarshado 我稍后会添加一些链接,但我假设 pre-commit 不考虑 git-lfs,但我对 git-lfs 真的不太了解,无法以一种或另一种方式说.
-
我也不熟悉 git-lfs,但基于 its home page,它看起来像“Just Works:tm:”。浏览一些docs,听起来它使用了一个预推钩来实现它的一些(大部分?)魔法。
标签: bash git unity3d github git-lfs