我已经使用git进行源代码控制有一段时间了,非常喜欢它。所以我开始研究使用git来存储大量的二进制文件,但是我发现这似乎不是git的强项。那么对于大文本文件呢?看起来git应该能够很好地处理它们,但我也遇到了问题。
我正在使用一个550mb大小的mbox格式文本文件进行测试。我初始化了一个新的仓库进行测试。以下是我的结果:
- 使用git add和git commit - 仓库总大小为306mb - 仓库包含一个306mb大小的对象
- 向邮箱文件添加一封电子邮件并git commit - 仓库总大小为611mb - 仓库包含两个大小均为306mb的对象
- 再添加一封电子邮件并git commit - 仓库总大小为917mb - 仓库包含三个大小均为306mb的对象
因此,每次提交都会向仓库添加电子邮件的新副本。现在我想尝试将仓库的大小减少到可管理的范围。以下是我的结果:
- git repack -adf - 仓库总大小为877mb - 仓库包含一个876mb大小的pack文件
- git gc --aggressive - 仓库总大小为877mb - 仓库包含一个876mb大小的pack文件
我希望能够将仓库大小减小到大约306mb左右,但我无法弄清楚如何做到。任何更大的值都意味着存储了大量重复数据。
我的希望是,仓库只会增加新电子邮件的大小,而不是整个邮箱的大小。我并不想在这里使用版本控制来控制电子邮件,但这似乎是我从使用每晚脚本增量备份用户主目录中受阻的关键问题。
有没有什么建议可以避免在向非常大的文本文件末尾插入少量文本时导致存储库大小急剧增加的情况?
我已经看过 bup 和 git annex,但如果可能的话,我想坚持使用原生的 git。
感谢您的帮助!