我试图git克隆LibreOffice代码库,但目前我有一个大约300kbps的互联网连接,它只是什么都不稳定。我可以在任何时候恢复连接,但是git克隆进程已经停止工作,没有办法让它再次运行。有没有什么方法可以让git克隆下载更具抗失败性?
我自己考虑的一个选择是下载别人的.git目录,但这过于依赖他人,对我来说似乎不是最好的解决方案。
我试图git克隆LibreOffice代码库,但目前我有一个大约300kbps的互联网连接,它只是什么都不稳定。我可以在任何时候恢复连接,但是git克隆进程已经停止工作,没有办法让它再次运行。有没有什么方法可以让git克隆下载更具抗失败性?
我自己考虑的一个选择是下载别人的.git目录,但这过于依赖他人,对我来说似乎不是最好的解决方案。
当前回答
这个问题也困扰着我。对我来说,有一个变通办法。它可能适用于你,也可能不适用。
我有时会使用手机在远程系统上启动git操作。如果我的wi-fi断了,会话当然会结束,git会放弃整个克隆操作而不恢复。但是由于从我的远程系统到git master的互联网连接是可靠的,所以没有必要让克隆停止。我所需要的只是从终端会话分离克隆的常识。这可以通过使用screen/tmux或nohup/daemon来完成。所以在我的情况下,这是一个生活设备故障。
其他回答
该方法使用第三方服务器。
首先,做 Git克隆——裸的,然后 rsync -v -P -e ssh user@host:repo。git。 Windows下可以使用msys。
git clone --depth <Number> <repository> --branch <branch name> --single-branch
这个命令帮助了我(感谢尼古拉·帕鲁奇)
例如
git clone --depth 1 https://github.com/gokhanmoral/siyahkernel3 --branch ics --single-branch
我想到的两种解决方案(或者说是变通方法)是:
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.
我觉得这个还没准备好。有一个旧的GSoC页面计划实现你想要的功能。我最好的办法是,像你建议的那样把它下载成一个目录。我假设你能够通过其他协议恢复下载。
Restartable Clone When cloning a large repository (such as KDE, Open Office, Linux kernel) there is currently no way to restart an interrupted clone. It may take considerable time for a user on the end of a small pipe to download the data, and if the clone is interrupted in the middle the user currently needs to start over from the beginning and try again. For some users this may make it impossible to clone a large repository. Goal: Allow git-clone to automatically resume a previously failed download over the native git:// protocol. Language: C Mentor: Shawn Pearce Suggested by: Shawn Pearce on gmane
更新
除了浅克隆(git clone——depth=1)的建议外,如果有人可以为您创建一个裸库(如果您可以与提供者沟通),这可能会有所帮助。您可以轻松地将裸存储库转换为完整存储库。另外,请阅读答案中的评论,因为肤浅的克隆可能并不总是有帮助。
如果你可以访问第三方服务器,你可以克隆那里,然后复制。