Replies: 1 comment 3 replies
-
Thanks for sharing, that's a very interesting comparison and I am somewhat glad that However, it's also not a project goal to support smaller systems, particularly not 32bit systems which will have more trouble than with Git. Most 'small' systems nowadays are 64 bit, so the greatest obstacle towards completing a task will be swapping. When you say that cloning the linux kernel with 512MB RAM didn't work, what does that mean exactly? OOM kill? Or excruciating swapping? If the case is the latter, I would have expected it to finish eventually. Normally, I'd say that there is no way that this is made to work with the current algorithm - it's already mindful about memory and should be a bit better than Git, but it still has to hold millions of objects in memory all at once, which is where the high demands for the linux kernel are coming from. However, there is an issue whose resolution basically requires rewriting the way packs are resolved. This algorithm will be more compatible, but also will be less parallel. While at it, I don't think it would hurt to make it possible to work in low-memory situations. To make that work, the only thing I can imagine that it crates some on-disk memory-mappable data-structure that first has to grow while streaming the pack, to later be traversed. Interestingly I'd think that if the disk is moderately fast, that streaming of data shouldn't be a bottleneck neither for reading nor for writing, if done cleverly, (or if a sqlite database is used ;)). That's a long-winded way of saying: A fix would be welcome if it would also fix #1025 at the same time. |
Beta Was this translation helpful? Give feedback.
-
Recently I wanted to mirror several big git reporisories by cloning them (as bare) and then periodically fetching updates on a low-end NAS. Turned out neither git nor gitoxide can currently be used to clone something like https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ while having just 512MB RAM.
I've failed to find whether being usable in low-memory environments is a goal for gitoxide. Would it make sense to try adding support for such use cases or would trying to support these without degrading performance in the normal case be unwanted complexity for
gitoxide
that'd be really unlikely to be accepted?Beta Was this translation helpful? Give feedback.
All reactions