web-dev-qa-db-ja.com

Capistranoエラーtar:これは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      

私は2つのことについて混乱しています。

  1. Capistranoが実行されている理由git archive ここに:
    git archive feature/Capistrano | tar -x -C /home/Rails/rails-capistrano/releases/20140114234157

  2. なぜtarが失敗するのですか?

90
Eric Francis

Gitから存在しないブランチをプルしていることに気付くまで、私は同じ問題を抱えていました。

287
kubbing

App_name/repoを削除すると、この問題も修正されました。

19
lugolabs

これは、デプロイするサーバーのリポジトリが台無しになったときに発生します。 Capistranoがデフォルトで/var/www/$application/repo(他の人の参照用)に入れる、ベアgitリポジトリについて話している。

あなたの場合、ローカルのfeature/Capistranoブランチがないため、git archive feature/Capistranoを実行すると、その|パイプには何も出力されません。確認するには、サーバーにsshし、/ home/Rails/rails-capistrano/repoにcdして、git branchを実行します。

  1. 選択したブランチのツリーをエクスポートする方法として git archive を実行しています。 git archive「標準出力に書き出します」ので、Capistranoはそれをtarにリダイレクトして、アーカイブをすぐに解凍します新しいリリースディレクトリ。 (なぜカピストラーノがgit checkoutの代わりにこれを選んだかは私を打ち負かします。)

  2. tarは何も受け取っていないため失敗しますd:

トラブルシューティングの2つの可能な解決策/方法を考えることができます。

  • サーバーにsshし、@ lugolabsで言及されているように、手動でリポジトリフォルダー(例:/ home/Rails/rails-capistrano/repo)を削除します
  • サーバーのリポジトリが期待するリモートを使用していることを確認してください(ssh in、repo /にcd、およびgit remote -vを実行)-deploy.rbで:repo_urlを更新する必要があるだけです(そしてrepo/dirを削除します)。
14
Jorge Orpinel

このエラーが発生するたびに、deploy/environment。rbファイルで指定されたブランチがgitにチェックインされなかったことが原因でした。 add/commit/git Push Origin branch_nameを実行すると、おそらく動作するでしょう。

4
fuzzygroup

このフォルダーはgit pullを介して読み込まれるため、空にしないでください。空の場合は、tarballではなくgitからの問題です。

私が抱えていた問題は、私のcapistrano deploy.rbリポジトリURLが作業中のプロジェクトとは異なるURLに設定されていたことです。この問題を解決するには、サーバーにログオンし、app_name/repoフォルダーを削除する必要がありました元の不正なリモートURLをキャッシュしています。

4
LessQuesar

開発にはBedrock Roots(ワードプレス)、デプロイにはcapistrano、git flowを使用しています。ホットフィックス/x.x.xブランチ上でローカルにデプロイしようとしたときに、このエラーが発生しました。そのため、現在の作業を終了し(ブランチを開発するために変更をマージ)、その後正常にデプロイしました。

0
Sergey Dubovik