Capistrano错误tar:这看起来不像tar存档


102
 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      

我对两件事感到困惑:

  1. 为什么Capistrano在git archive这里运行:
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. 为什么会tar失败?

Answers:


321

我遇到了同样的问题,直到意识到从git中拉出不存在的分支。


53
这样的额头sm子。
Grant Birchmeier 2014年

20
我也是
傻瓜

12
第二次我遇到您的答案,第二次发生这种情况,我感到愚蠢!
Fabian de Pabian

11
我很高兴这个问题有很多赞成票。至少我不会孤单失败。
切碎

6
严重的是,这可能是我第42次执行相同的google搜索并阅读此答案的xD
Cyril Duchon-Doris


15

当要部署的服务器中的存储库混乱时,就会发生这种情况。我们正在谈论Capistrano默认情况下会放入的裸git repo /var/www/$application/repo(供其他人参考)。

在您的情况下,它没有本地功能/ Capistrano分支,因此在运行时git archive feature/Capistrano不会向该|管道输出任何内容。要确认,请先将ssh放入服务器,再将cd放入/ home / rails / rails-capistrano / repo,然后运行git branch

  1. 它正在运行git归档文件,作为导出所选分支的树的一种方式。git archive “将其写到标准输出中”,因此Capistrano将其重定向到tar,以便立即将存档解压缩到新的发行目录中。(为什么Capistrano选择了这个而不是git checkout击败了我。)

  2. tar失败,因为它什么也没收到d:

我可以想到两种可能的解决方案/方式进行故障排除:

  • SSH进入服务器并手动删除回购文件夹(例如,在您的情况下为/ home / rails / rails-capistrano / repo),如@lugolabs所述
  • 确保服务器的回购正在使用您期望的远程服务器(将ssh输入,cd放入repo /并运行git remote -v)-您可能只需要更新:repo_urldeploy.rb中的内容(并删除回购/目录)。

我们还有其他方法可以删除当前存储库吗?
hainguyen

4

我认为该文件夹是通过git pull填充的,因此它不应为空。如果确实看到它为空,则问题出在git而非tarball。

我遇到的问题是我的capistrano deploy.rb存储库URL设置为与我正在处理的项目不同的URL。为了解决此问题,我还必须登录服务器并删除app_name / repo文件夹,该文件夹必须一直在缓存原始错误的远程URL。


4
对于谷歌搜索人员:还要检查是否设置了现有分支!...为我工作:)
等效

4

每当遇到此错误时,这是​​因为在我的deploy / 环境 .rb文件中指定的分支未检入git。做一个add / commit / git push origin branch_name,这可能会使事情工作。


0

我正在使用Bedrock Roots(wordpress)进行开发,使用capistrano进行部署和git flow。在本地进行修补程序/ xxx分支时,尝试部署时偶然发现此错误。因此,我完成了当前工作(将更改合并到开发分支中),然后成功进行了部署。


您了解为什么合并为开发解决了您的问题?
埃里克·弗朗西斯

部署其他分支机构可能有效,但问题仍然是为什么您要部署的特定分支机构不起作用?我可能有一个答案。
豪尔赫·奥尔皮内尔

@EricFrancis实际上,我现在知道了)正如投票表决的结果所述,该修补程序不存在于远程(capistrano部署所在的位置)上
Sergey Dubovik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.