INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5] fatal: Not a valid object name
DEBUG [2dea2fe5] tar: This does not look like a tar archive
DEBUG [2dea2fe5] tar:
DEBUG [2dea2fe5] Exiting with failure status due to previous errors
我对两件事感到困惑:
为什么Capistrano在这里运行git archive
:
git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157
为什么tar
失败?
答案 0 :(得分:276)
我有同样的问题,直到我意识到我从git中拉出了不存在的分支。
答案 1 :(得分:19)
删除app_name / repo也为我解决了这个问题。
答案 2 :(得分:14)
当要部署的服务器中的repo搞砸了,就会发生这种情况。我们正在谈论Capistrano默认会放入/var/www/$application/repo
的裸git仓库(供其他人参考)。
在您的情况下,它没有本地功能/ Capistrano 分支,因此在运行git archive feature/Capistrano
时,不会向该|
管道输出任何内容。要确认,请进入服务器,进入/ home / rails / rails-capistrano / repo,然后运行git branch
。
它正在运行git archive作为导出所选分支树的方法。 git archive "将其写入标准输出"所以Capistrano将其重定向到 tar ,以便立即将存档解压缩到新版本目录中。 (为什么Capistrano选择了这个而不是git checkout让我失望。)
tar 失败,因为它没有收到任何费用d:
我可以考虑两种可能的解决方案/解决方法:
git remote -v
) - 您可能只需更新:repo_url
1:}在deploy.rb中(并删除repo / dir)。答案 3 :(得分:4)
我认为该文件夹通过git pull填充,因此它不应为空。如果你确实看到它是空的,问题来自git而不是tarball。
我遇到的问题是我的capistrano deploy.rb存储库URL被设置为与我工作的项目不同的一个。为了解决这个问题,我还必须登录到服务器并删除app_name / repo必须缓存原始错误远程URL的文件夹。
答案 4 :(得分:4)
每当我遇到此错误时,都是因为我的deploy / 环境 .rb文件中指定的分支未被检入git。添加/提交/ git推送源 branch_name ,这可能会使事情有效。
答案 5 :(得分:0)
我正在使用Bedrock Roots(wordpress)进行开发,使用capistrano进行部署和git流程。 在尝试部署时偶然发现此错误,而在本地修补程序/ x.x.x分支上。所以我完成了当前(开发分支的合并更改),然后成功部署。
答案 6 :(得分:0)