private bool reachedInCoreLimit()
{
if (_blocks.Count * Block.SZ < inCoreLimit)
return false;
_onDiskFile = new FileInfo("gitsharp_" + Path.GetRandomFileName());
Block last = _blocks[_blocks.Count - 1];
_blocks.RemoveAt(_blocks.Count - 1);
var diskOut_filestream = new FileStream(_onDiskFile.FullName, System.IO.FileMode.Create, FileAccess.Write);
foreach (Block b in _blocks)
diskOut_filestream.Write(b.buffer, 0, b.count);
_blocks = null;
diskOut = new BufferedStream(diskOut_filestream, Block.SZ);
diskOut.Write(last.buffer, 0, last.count);
return true;
}