我使用快速导出将Mercurial存储库转换为Git.但Git存储库非常庞大:Git为18 GB,Mercurial为3.4 GB.我的清理步骤都没有帮助.
我的Mercurial存储库由一个65 MB文件(SQLite格式的Anki抽认卡)主导,每天更新.它的历史已经增长到2.9 GB,低于.hg/store/data.
我希望Git能够更好地压缩历史记录,但我无法将存储库缩小到18 GB以下!
我试过git prune,git gc和其他人一样无济于事.我甚至尝试压缩.git文件夹,它仍然是18 GB.
我错过了什么吗?
更新:我尝试了Bazaar(bzr),它将我的存储库压缩到仅2.3 GB.太好了!
一个原因可能是Mercurial具有非常紧凑的存储格式,即使对于二进制文件也会涉及差异.由于使用差异来重新创建版本可能非常耗时,因此只要差异+旧原始版本超过完整快照大小的两倍,它就会存储完整的快照.
就个人而言,我会尝试存储sqlite数据库的转储而不是数据库文件本身,并查看它的位置.它可能效率更高.
我不知道git的存储格式是什么.但我猜它不会像Mercurial那样涉及差异.
如果git gc失败,请尝试手动运行a git repack然后再运行git gc.
我对SVN,Git和Hg的观察:
我一直观察到SVN和Hg存储库比相应的git存储库小得多.这是因为每次更改文件(文本或二进制文件)都会为其添加新的完整对象.在SVN中,即使在二进制文件的情况下也只添加了差异,并且SVN中的二进制差异也非常好.
但这是包文件的来源,因为它们只存储类似对象中的diff(delta),甚至是压缩的.即使有打包,我观察到Git存储库,取决于文件的类型和这些文件所经历的更改量,往往更大.这是我接受Git接受的事情,考虑到Git的各种操作有多快,我愿意接受这种妥协.
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |