文章目录
由于国内网络环境的影响,我们从 github clone 代码时,总是会出现 clone 失败的情况。当 clone失败时,我们怎么处理解决呢?以下总结了三种解决办法,仅供参考交流。
这里,我以获取乐鑫提供的软件库文件 ESP-IDF 仓库。作为 clone 的事例,具体讲解当 clone 失败时,怎么解决问题。
获取 ESP-IDF 的本地副本:打开终端,切换到要保存 ESP-IDF 的工作目录,使用 git clone 命令克隆远程仓库。
打开终端,输入以下命令:
mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
ESP-IDF 将下载至 ~/esp/esp-idf。
受到网络环境的影响,代码一次性克隆成功,基本属于中彩票。经常会出现子模块 clone 失败的情况。即报错:Failed to clone...
这种问题,大多由于网络不稳定或者无法访问 github 子模块网络,我们首先多尝试 clone几次(说不定网络稳定一会儿,就能 clone 成功),具体步骤如下:
(1) 切换到 esp-idf 代码目录下;
cd esp-idf/
(2) 查看当前本地分支状态;
git status
git 会提示,当前本地分支与远程分支的不一致性(红色字体部分),也就是我们 clone 失败的具体组件部分。
(3) 我们再次输入子模块更新下载指令,尝试从远端仓库 clone 代码;
git submodule update --init --recursive
不用担心重复下载,已经 clone 成功的代码,会自动跳过。
在网络状况良好的情况下,多尝试几次,基本就能 clone 成功。但是,也有可能出现下面的情况,我称之为“假象 clone”。
(1) 经过多次的重复 clone 子模块,git 已经不再下载新的代码,貌似我们已经成功 clone 所有远端仓库;
(2) 我们再次输入本地分支状态查看命令,发现 git 提示了很多“不一致性”;
也就是说我们本地分支和远端分支还是不同,我们没有 clone 成功,可是为什么 clone 子模块的命令不再生效呢?
根据提示路径,我们可以找到不一致模块的文件夹,发现里面只有一个空目录。我们使用快捷键 CTRL+H,发现文件夹里面有以 . 开头的隐藏文件(比如 .git)。
这里我猜测 clone 命令不再有效的原因是:.git 中记录该子模块的版本信息,所以当 git 命令,扫描到该子模块时,已经有文件夹和版本信息,所以不再 clone,认为已经存在。(如果有同学知道这部分机制,欢迎评论留言)
(3) 既然 git 扫描的依据是:文件夹 + .git,那么我们将不一致模块的最后一级文件夹删除即可;
(4) 删除以后,再次输入更新下载子模块的命令;
git submodule update --init --recursive
可以看到,刚才删除的子模块再次被下载,并切换到相应的最新分支。
(5) 最后,输入查看本地分支状态的命令;
git status
提示:nothing to commit,working tree clean.
翻译过来的意思就是:没有需要提交的代码,本地工作的树很干净,和远端仓库代码一致。
至此,通过以上两种办法的交替,多次使用,基本能 clone 成功,就是比较耗费时间。
有些代码,经过以上两种办法还是无法 clone 成功。那没办法了,基本就是网络问题。
这里推荐大家一个小工具(科学上网),作者亲自尝试以后,基本能访问 google 和 YouTube,说明效果还是不错的。
以上就是 git submodule update --init --recursive 失败的时候,三种处理方法。推荐先尝试第三种方法,毕竟咱们的时间就是金钱。
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
我需要一个非常简单的字符串验证器来显示第一个符号与所需格式不对应的位置。我想使用正则表达式,但在这种情况下,我必须找到与表达式相对应的字符串停止的位置,但我找不到可以做到这一点的方法。(这一定是一种相当简单的方法……也许没有?)例如,如果我有正则表达式:/^Q+E+R+$/带字符串:"QQQQEEE2ER"期望的结果应该是7 最佳答案 一个想法:你可以做的是标记你的模式并用可选的嵌套捕获组编写它:^(Q+(E+(R+($)?)?)?)?然后你只需要计算你获得的捕获组的数量就可以知道正则表达式引擎在模式中停止的位置,你可以确定匹配结束
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
我想从then子句中访问case语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案
一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id