我试图git克隆LibreOffice代码库,但目前我有一个大约300kbps的互联网连接,它只是什么都不稳定。我可以在任何时候恢复连接,但是git克隆进程已经停止工作,没有办法让它再次运行。有没有什么方法可以让git克隆下载更具抗失败性?
我自己考虑的一个选择是下载别人的.git目录,但这过于依赖他人,对我来说似乎不是最好的解决方案。
我试图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操作。如果我的wi-fi断了,会话当然会结束,git会放弃整个克隆操作而不恢复。但是由于从我的远程系统到git master的互联网连接是可靠的,所以没有必要让克隆停止。我所需要的只是从终端会话分离克隆的常识。这可以通过使用screen/tmux或nohup/daemon来完成。所以在我的情况下,这是一个生活设备故障。
你可以“下载其他人的.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存储库克隆一样工作。
所以,你可以做的是:对于每个存储库,用你最喜欢的网络下载器获取它的副本(它将处理恢复失败下载的所有问题),并从该副本克隆。当你想要更新时,再次使用你最喜欢的网络下载器来更新你的副本,并从该副本中提取。现在你的克隆和更新就像你最喜欢的网络下载器一样抵抗坏连接。
同样的问题-我有一个非常脆弱的互联网连接,通常不超过10-15 kb/秒:- p
对我来说,wget方法非常有效。
转到有“克隆或下载”绿色按钮的存储库站点,单击它并复制ZIP下载选项的链接。
然后插入到wget命令的链接:
wget -c -m -np https://github.com/your/repository/archive/master.zip
工作起来很有魅力……
如果我们假设服务器有良好的带宽(并且你有一个服务器),另一个答案是:
使用服务器端Git包装器创建自己的服务器 在您的服务器中克隆它 使用服务器端Zip Archiver's进行压缩 从服务器端简历下载
但这只适用于非常基本的web开发经验;) 此外,你还需要在你的服务器上安装git.exe
您可以尝试在hg-git扩展中使用mercurial。
如果这不起作用,你可以使用git fetch <commit-id>来获取远程git存储库的一部分(你可以获取一个空的git存储库,没有必要使用clone来创建它)。但是当您使用这种方法时,您可能需要纠正分支配置(=创建本地和远程跟踪分支)。