我试图git克隆LibreOffice代码库,但目前我有一个大约300kbps的互联网连接,它只是什么都不稳定。我可以在任何时候恢复连接,但是git克隆进程已经停止工作,没有办法让它再次运行。有没有什么方法可以让git克隆下载更具抗失败性?

我自己考虑的一个选择是下载别人的.git目录,但这过于依赖他人,对我来说似乎不是最好的解决方案。


当前回答

我想到的两种解决方案(或者说是变通方法)是:

Use shallow clone i.e. git clone --depth=1, then deepen this clone using git fetch --depth=N, with increasing N. You can use git fetch --unshallow (since 1.8.0.3) to download all remaining revisions. Ask somebody to bundle up to some tagged release (see git-bundle(1) manpage). The bundle itself is an ordinary file, which you can download any way, via HTTP/FTP with resume support, via BitTorrent, via rsync, etc. The you can create clone from bundle, fix configuration, and do further fetches from official LibreOffice repository.

其他回答

让我们把git克隆分解成它的组成部分,并使用git签出来防止重新下载文件。

当git克隆运行时,它所做的前几件事等同于

git init
git remote add origin <repo_url>
git fetch origin <branch>

如果您手动运行上述步骤,并假设它们正确完成,您现在可以根据需要多次运行以下步骤:

git checkout --force <branch>

请注意,每次运行时它都会检出所有文件,但您不必重新下载文件,这可能会节省大量时间。

同样的问题-我有一个非常脆弱的互联网连接,通常不超过10-15 kb/秒:- p

对我来说,wget方法非常有效。

转到有“克隆或下载”绿色按钮的存储库站点,单击它并复制ZIP下载选项的链接。

然后插入到wget命令的链接:

wget -c -m -np https://github.com/your/repository/archive/master.zip

工作起来很有魅力……

增加缓冲区大小将有助于解决这个问题。按照步骤做就可以了。

打开终端或Git Bash,用cd到你想克隆repo的位置。 将压缩设置为0 Git配置——global core.compression 0 设置postBuffer大小 Git配置——global http。postBuffer 1048576000 设置maxRequestBuffer大小 Git配置——global http。maxRequestBuffer 100 现在开始克隆 Git克隆<repo url> 等待克隆完成。

该方法使用第三方服务器。

首先,做 Git克隆——裸的,然后 rsync -v -P -e ssh user@host:repo。git。 Windows下可以使用msys。

你可以“下载其他人的.git目录”,但是这个其他人就是官方的存储库本身。LibreOffice存储库可以通过http获取,例如它们的构建。git在http://anongit.freedesktop.org/git/libreoffice/build.git/(完整列表见http://cgit.freedesktop.org/libreoffice/, http URL在每个存储库页面的底部)。

您在这些http url中看到的只不过是一个.git目录(实际上是一个“裸”存储库,其中只有您在.git目录中可以找到的内容)。它与服务器读取git://协议(git守护进程)的目录相同。如果您使用web下载器(例如wget -m -np)复制这些目录,您可以从您的副本克隆,它将像直接从http存储库克隆一样工作。

所以,你可以做的是:对于每个存储库,用你最喜欢的网络下载器获取它的副本(它将处理恢复失败下载的所有问题),并从该副本克隆。当你想要更新时,再次使用你最喜欢的网络下载器来更新你的副本,并从该副本中提取。现在你的克隆和更新就像你最喜欢的网络下载器一样抵抗坏连接。