Capistrano错误焦油:这看起来不像一个tar档案

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失败?

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

删除app_name / repo也为我解决了这个问题。

发生这种情况时,在部署的服务器回购混乱。 我们正在谈论的是,默认情况下,Capistrano的裸git回购将放在/var/www/$application/repo (供其他人参考)。

在你的情况下,它没有一个本地特性/ Capistrano分支,所以当运行git archive feature/Capistrano没有输出git archive feature/Capistrano | pipe。 为了确认,ssh进入服务器,cd进入/ home / rails / rails-capistrano / repo,然后运行git branch

  1. 它运行git归档作为导出所选分支树的一种方式。 git archive “将其写入标准输出”,所以Capistrano将其redirect到tar ,以便立即将压缩文件解压缩到您的新版本目录中。 (为什么卡皮斯特拉诺select这个而不是混帐检查失败了。)

  2. tar失败,因为它没有收到任何东西d:

我可以想到两种可能的解决scheme或解决方法:

  • SSH入服务器,并手动删除回购文件夹(例如在你的情况/ home / rails / rails-capistrano /回购),由@lugolabs
  • 确保服务器的回购是使用你期望的远程(ssh in,cd进入repo /,并运行git remote -v ) – 你可能只需要在deploy.rb中更新你的:repo_url repo_url(并且删除回购/ DIR)。

我认为这个文件夹通过git拉来填充,所以它不应该是空的。 如果你确实看到它是空的问题是从git而不是tarball。

我遇到的问题是我的capistrano deploy.rb存储库URL被设置为与我工作的项目不同。为了解决这个问题,我还必须login到服务器并删除app_name / repo文件夹,它必须已经caching了原来不好的远程URL。

每当我遇到这个错误,这是因为我的部署/ 环境 .rb文件中指定的分支未检入到git中。 做一个添加/提交/ git推送原始分支名称 ,这可能会使事情工作。

我正在使用基石(wordpress)开发,capistrano部署和gitstream。 在尝试部署时发生此错误,而在本地修补程序/ xxx分支上。 所以我完成了当前(合并更改开发分支),然后成功部署。