rsync git big repository

时间:2011-08-23 20:56:55

标签: git

我正在尝试将git存储库克隆到我的本地计算机上,但它说的是“malloc failed”,因为存储库太大了。

有谁知道我可以用来复制目录的确切rsync命令?或者我还能做些什么来克隆大型存储库?

我尝试过rsyncing,但它给了我以下错误:

Invalid command: 'rsync --server --sender -v . username/dir.git'
  You appear to be using ssh to clone a git:// URL.
  Make sure your core.gitProxy config option and the
  GIT_PROXY_COMMAND environment variable are NOT set.
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(463) [receiver=2.6.8]

尝试使用git clone时出现以下错误:

remote: Counting objects: 52708, done.
remote: Compressing objects: 100% (52188/52188), done.
fatal: Out of memory, malloc failed (tried to allocate 1471836719 bytes)
fatal: index-pack failed

3 个答案:

答案 0 :(得分:2)

只需使用较新版本的git即可。较新的版本可以处理这个问题。 或者,如果您已经使用新版本,请将git config core.bigFileThreshold设置为较小的尺寸。

答案 1 :(得分:0)

尝试使用ulimit以允许git进程使用更多内存。

  • ulimit -m XXX
  • ulimit -v YYY

答案 2 :(得分:0)

如果您有一个非常大的文件,我认为您没有任何其他选择,只是尝试将其从您的回购中删除,假设:

  • 您可以访问远程服务器
  • 没有其他人设法克隆它(因为它会改变过程中的历史记录,这将使现有克隆的任何未来拉动成为问题。)

请参阅section "Removing a File from Every Commit" from the Pro Git book

git filter-branch --tree-filter 'rm -f bigFile' -- --all

同时检查section "Checklist for Shrinking a Repository" of git filter-branch