【问题标题】:Capistrano error tar: This does not look like a tar archiveCapistrano 错误 tar:这看起来不像 tar 存档
【发布时间】:2014-02-03 06:40:50
【问题描述】:
 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 失败了?

【问题讨论】:

    标签: capistrano rvm-capistrano capistrano3


    【解决方案1】:

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

    【讨论】:

    • 这样的额头。
    • 第二次遇到你的回答,第二次出现这种情况,感觉很傻!
    • 我很高兴这个问题有这么多的赞成票。至少我不会孤独地失败。
    • 这可能是问题的原因,但并不能真正回答所提出的问题。埃里克似乎没有以这种方式解决他的问题。我会发布一个替代品。回答。
    • 说真的,这可能是我第 42 次做同样的谷歌搜索并阅读这个答案 xD
    【解决方案2】:

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

    【讨论】:

    • 每当 cap deploy 出现 repo 问题时,这对我有用,但并非总是如此。
    【解决方案3】:

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

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

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

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

    我能想到两种可能的解决方案/方法来解决问题:

    • ssh 进入服务器并手动删除@lugolabs 提到的 repo 文件夹(例如,在您的情况下为 /home/rails/rails-capistrano/repo)
    • 确保服务器的 repo 正在使用您期望的远程(ssh in,cd 到 repo/,然后运行 ​​git remote -v)——您可能只需要在 deploy.rb 中更新您的 :repo_url(并删除存储库/目录)。

    【讨论】:

    • 除了删除当前的 repo,我们还有其他方法吗?
    【解决方案4】:

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

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

    【讨论】:

    • 对于谷歌搜索的人:还要检查你是否设置了现有的分支!!! ...为我工作:)
    【解决方案5】:

    每当我遇到此错误时,都是因为我的 deploy/environment.rb 文件中指定的分支未检入 git。执行 add / commit / git push origin branch_name,这可能会让事情顺利进行。

    【讨论】:

      【解决方案6】:

      我使用 Bedrock Roots (wordpress) 进行开发,使用 capistrano 进行部署和 git flow。 尝试部署时偶然发现此错误,而在本地 hotfix/x.x.x 分支上。所以我完成了当前(合并更改到开发分支),然后成功部署。

      【讨论】:

      • 你明白为什么合并到开发可以解决你的问题吗?
      • 部署其他分支可能会起作用,但问题仍然是为什么您尝试部署的特定分支不起作用?我可能有答案。
      • @EricFrancis 实际上,我现在这样做了)正如投票答案所述,远程(capistrano 从哪里部署)上不存在修补程序
      【解决方案7】:

      您可以在deploy.rb 上设置您的分支: set :branch, "main"

      source

      注意:默认分支是master

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-20
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        • 2017-03-30
        • 1970-01-01
        相关资源
        最近更新 更多