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

Eri*_*cis 93 capistrano rvm-capistrano capistrano3

 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      
Run Code Online (Sandbox Code Playgroud)

我对两件事感到困惑:

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

  2. 为什么tar失败?

kub*_*ing 294

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

  • 这样的额头咂嘴. (46认同)
  • 我也是笨蛋 (18认同)
  • 我第二次遇到你的回答,第二次发生这种情况,我感到愚蠢! (11认同)
  • 我很高兴这个问题有很多赞成.至少我不会失败孤独. (11认同)
  • 严重的是,这可能是我在做同样的谷歌搜索,阅读这个答案的xD第42时间 (5认同)

lug*_*abs 19

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


Jor*_*nel 14

当要部署的服务器中的repo搞砸时会发生这种情况.我们正在谈论Capistrano默认会放入的裸git仓库/var/www/$application/repo(供其他人参考).

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

  1. 它正在运行git archive作为导出所选分支树的方法.git archive "将其写入标准输出",因此Capistrano将其重定向到tar,以便立即将存档解压缩到新的发布目录中.(为什么Capistrano选择了这个而不是git checkout让我失望.)

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

我可以想到两种可能的解决方案/解决方法:

  • ssh进入服务器并手动删除repo文件夹(例如在你的情况下/ home/rails/rails-capistrano/repo),如@lugolabs所述
  • 确保服务器的repo正在使用你期望的远程(ssh in,cd到repo /,并运行git remote -v) - 你可能只需要更新你:repo_url的deploy.rb(并删除repo/dir).


fuz*_*oup 5

每当我遇到此错误时,都是因为我的部署/环境.rb 文件中指定的分支未签入 git。执行 add / commit / git push originbranch_name 这可能会使事情正常进行。