【发布时间】:2016-04-15 21:26:19
【问题描述】:
我想在 github 上跟踪一个 190 MB 的纯文本文件。
文本文件是我们的文本转语音引擎的发音词典文件。我们会定期在文本文件中添加和修改行,并且差异很小,因此从这个意义上说,它非常适合 git。
但是,GitHub 有严格的 100 MB 文件大小限制。我已经尝试过 GitHub 大文件存储服务,但每次更改时都会上传整个 190 MB 文件的新版本 - 所以如果我走这条路,它会迅速增长到许多 GB。
我想将文件保留为 一个 文件而不是拆分它,因为这就是我们当前的工作流程,并且需要一些编码以允许多个文本文件作为我们工具中的输入/输出(而且我们没有太多的开发资源)。
我的一个想法是,也许可以设置一些提交前和提交后挂钩来自动拆分和连接大文件?这可能吗?
其他想法?
编辑:我知道 StackOverflow 上的类似问题中描述的 100 MB 文件大小限制,但我不认为我的问题重复,因为我要求的是具体情况差异小且频繁的地方(我不想上传大的 ZIP 文件或任何东西)。但是,我的理解是 git-lfs 仅适用于 很少 更改的文件,而普通的 git 将非常适合我所描述的那种文件;除了 GitHub 有文件大小限制。
更新:我昨天尝试创建一个小型跨平台程序,该程序使用 git 挂钩将文件拆分和连接成更小的文件。它有点工作,但不是很令人满意。您需要将您的大文本文件排除在 .gitignore 之外,这会使 git 不知道它是否已更改。 git status 或 git commit 最初未检测到拆分文件,并导致与此 SO 问题中所述相同的问题,这很烦人:Pre-commit script creates mysqldump file, but "nothing to commit (working directory clean)"?
设置 cron 作业 (linux) 和计划任务 (windows) 以定期自动重新生成拆分文件可能会解决此问题,但自动设置并不容易,可能会导致用户计算机出现性能问题,而且不是很优雅解决方案。可能还需要一些 hacky 解决方案,例如动态修改 .gitignore,而且您绝不会得到实际文本文件的差异,只有拆分文件(尽管这可能是可以接受的,因为它们非常相似)。
所以,睡了之后,今天我认为 git hook 方法毕竟不是一个好的选择,因为它有太多的怪癖。正如@PyRulez 所建议的那样,我认为我将不得不查看 GitHub 以外的其他服务(不幸的是,因为我喜欢 github)。托管解决方案将更可取,以避免必须管理我们自己的服务器。我也希望它可以公开使用...
更新 2:我查看了 GitHub 的一些替代品,目前我倾向于使用 GitLab。我已经联系了 GitHub 支持以了解提高 100MB 限制的可能性,但如果他们不这样做,我会为这个特定项目切换到 GitLab。
【问题讨论】:
-
@Mayuso 我知道这听起来与其他问题相似,但这个问题是关于我有一个文本文件的具体情况,该文件有频繁但小的差异,如果这样可以解决 100 MB 的问题以某种方式限制。我知道二进制文件是不可能的。
-
我想我没有很好地理解这个问题,已经回答了,对不起:)
-
没问题:),我应该更清楚。
-
也许使用 gitHub 以外的东西?
标签: git github large-files pre-commit-hook post-commit-hook