pack.threads = 1
和gc.aggressiveWindow = 150
。
我有一个大型本地Git存储库,是一个SVN存储库的git svn clone
,包含大约40,000个提交。 我正在尝试在此存储库上运行git gc
,但无济于事:
$ git gc --auto
Auto packing the repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Counting objects: 25966, done.
Compressing objects: 100% (25249/25249), done.
fatal: Out of memory, malloc failed (tried to allocate 426523986 bytes)
error: failed to run repack
我正在一台4GB RAM的64位双核Win7机器上的Cygwin中运行Git 1.7.5.1。目前,.git
目录大小略大于6.1GB。
我尝试运行git gc --aggressive
,看看更完整的系统是否能够修复它,但没有成功:我收到与上述相同的消息,尝试了相同的尺寸malloc
,但对象计数(508,485个计数,493,506个压缩)要高得多。
我还尝试过——如Google所建议的——对我的.gitconfig
文件的[pack]
部分进行各种调整;最完整的来自另一个StackOverflow问题。现在,我的.gitconfig
具有以下相关行,但设置这些似乎没有任何影响:
[pack]
windowMemory = 16m
threads = 1
window = 1
depth = 1
deltaCacheSize = 1
有什么建议可以让我使用git
来gc
我的代码库吗?
编辑:Mark Longair 建议一些更改.gitconfig
文件的方法。我已经进行了修改,如下所示。但是这些更改没有任何作用。
[core]
packedGitWindowSize = 1m
packedGitLimit = 256m
[pack]
packSizeLimit = 128m
编辑2: Michael Krelin 建议增加交换/页面文件大小(WinXP指令在这里,Win7类似)。我尝试了那个方法,但没有任何改变,事实上我只是增加了可用的最大大小,看起来Windows从未尝试增加它正在使用的页面文件的大小。
现在我在查看是否是Cygwin内存限制造成了这个问题。为了检查"强制执行",我正在尝试以管理员权限运行Cygwin。为了检查"内部"(看起来更有可能),我正在玩一下Cygwin的最大内存设置。
编辑3: 尽管我更喜欢使用Cygwin,但事实证明Windows Git客户端可以很好地解决内存问题。看来当我的存储库需要整理时,我会不时地退回到那里。