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      

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

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

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

回答:


321

gitから存在しないブランチをプルしていることに気づくまで、同じ問題がありました。


53
そんな額スマッカー。
Grant Birchmeier、2014

20
私も馬鹿です
notaceo

12
二度目にあなたの答えに出会い、二度目にこれが起こったとき、私はばかげた感じです!
Fabian de Pabian 2015年

11
この質問に多くの賛成票があることをうれしく思います。少なくとも私は孤独に失敗することはありません。
2015年

6
真剣に、これはおそらく私が同じgoogle検索を行ってこの回答を読んでいるxDの42回目です
Cyril Duchon-Doris

19

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


1
これは、capのデプロイにリポジトリの問題があるときはいつでもうまくいきましたが、常にそうとは限りません。
ホルヘオーピネル2015年

15

これは、デプロイするサーバーのリポジトリがめちゃくちゃになっているときに発生します。私たちは、Capistranoがデフォルトで/var/www/$application/repo(他の人々の参照のために)配置するgitリポジトリのことを話しているのです。

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

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

  2. tarは何も受信しないため失敗しますd:

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

  • @lugolabsで言及されているように、サーバーにSSHで接続し、repoフォルダー(例:/ home / rails / rails-capistrano / repo)を手動で削除します。
  • 必ず、サーバーのレポは、(レポ/、および実行にCD、にsshのリモートあなたが期待しているを使用して作るgit remote -v) -あなたは自分のアップデートが必要な場合があり:repo_urldeploy.rbで(とレポ/ディレクトリを削除)を。

現在のリポジトリを削除する代わりに別の方法がありますか?
hainguyen 2016年

4

そのフォルダーはgit pullを介して入力されるため、空であってはいけないと思います。空の場合、問題はtarballではなくgitにあります。

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


4
グーグルの人のために:既存のブランチを設定しているかどうかもチェックしてください!!! ...私のために働いた:)
同等8

4

私がこのエラーに遭遇したときはいつでも、それは私のdeploy / environment .rbファイルで指定されたブランチがgitにチェックインされなかったためでした。add / commit / git push origin branch_nameを実行してください。そうすればうまくいくでしょう。


0

開発にはBedrock Roots(ワードプレス)、デプロイにはgitist、カピストラーノを使用しています。hotfix / xxxブランチ上でローカルに展開しようとしたときに、このエラーに遭遇しました。そのため、現在の作業(ブランチを開発するためにマージされた変更)を完了し、正常に展開しました。


開発にマージして問題を修正した理由を理解していますか?
Eric Francis

他のブランチのデプロイは機能する可能性がありますが、デプロイしようとしている特定のブランチが機能しないのはなぜですか?答えがあるかもしれません。
ホルヘオルピネル2015年

@EricFrancis実際に、私は今します)投票された回答が示すように、ホットフィックスはリモート(capistranoがデプロイされる場所)に存在しませんでした
Sergey Dubovik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.