有啥方法可以增量地从 Web 克隆存储库?
Posted
技术标签:
【中文标题】有啥方法可以增量地从 Web 克隆存储库?【英文标题】:Is there any way to clone a repository from the web incrementally?有什么方法可以增量地从 Web 克隆存储库? 【发布时间】:2011-06-10 14:43:48 【问题描述】:我在糟糕的地方拨号(是的,它仍然发生在 2011 年),并试图克隆一个巨大的存储库。它开始时没有问题,但每次拨号断开连接(这似乎是不可避免的)时,!#%$* hg 都会回滚所有内容,我再次留下一个空目录。
除了在远程 PC 上进行,然后通过 FTP 或其他方式下载整个内容之外,还有其他解决方案吗?
【问题讨论】:
这取决于您对 repo 的访问权限,但在某些情况下rsync
是一个选项。
rsync
绝对是这里的必经之路。无论重启多少次,您都将获得最少的冗余文件传输和有保证的结果。
【参考方案1】:
在类似 bash 的 shell 中,您可以执行以下操作:
$ hg init myclone
$ cd myclone
$ for REV in `seq 10 10 100` ; do hg pull -r $REV <REMOTEREPO>; done
从 10 开始,每次拉取下载接下来的 10 个修订版,最多 100 个。如果连接丢失,请将第一个参数调整为 seq
以匹配您已经拉取的内容。
【讨论】:
或在 Windows 命令提示符下:FOR /L %A IN (10,10,100) do hg pull -r %A <REMOTEREPO>
尽管您需要注意,如果您这样做,变更集编号可能与上游存储库不同。
我尝试进一步推动它,目前维护一个(新的)回购,以防我们中的多个人有同样的问题:请尝试贡献? :D github.com/nootanghimire/hg-clone-bash【参考方案2】:
根据您的连接不稳定程度,有两种执行初始克隆的选项。
首先,您可以尝试所谓的“流式克隆”。这些可以最大程度地缩短第一个字节的时间,但通常需要传输更多数据。
以下是如何进行流式克隆:
$ hg clone --uncompressed https://~~~~
您的第二个选项将是 hg clone --rev 操作,然后是一些增量拉取。这类似于在遥远的过去克隆存储库并偶尔进行更新。
$ hg clone --rev 5 https://~~~~
【讨论】:
【参考方案3】:根据这里的建议,
我创建了一个执行此操作的存储库。
https://github.com/nootanghimire/hg-clone-bash
它已针对单个 repo 进行了优化,但我想您可以分叉并处理它! :)
【讨论】:
以上是关于有啥方法可以增量地从 Web 克隆存储库?的主要内容,如果未能解决你的问题,请参考以下文章
markdown [操作方法]使用GitHub Desktop克隆并提交到Bitbucket存储库,就像使用任何GitHub存储库一样。 (苹果电脑)