3

Capistrano を使用してプロジェクトを展開するためのワークステーションのセットアップに問題があります。これは、私が以前にクライアントのために社内で取り組んだプロジェクトです。この PHP プロジェクトでは Capistrano + Git を問題なく使用できました。

今、私はプロジェクトを再検討しようとしており、ワークステーションをセットアップして、github を介してコードにアクセスし、Capistrano を介してクライアント サーバーにデプロイできるようにしています。

ワークステーションでもクライアント サーバーでも、github への接続に問題はありません。ワークステーションで SSH -vT git@github.com を実行すると、期待どおりの成功結果が得られます。

同様に、サーバーにシェルインしてコマンドを実行し、サーバーが github.com にアクセスできることを確認します。

ワークステーション側では、コードのクローン、プル、プッシュを問題なく実行できます。

ただし、capistrano 展開スクリプトを実行しようとすると、スクリプトは最初のフェッチ (またはクローン) を実行しようとするところまで来て、「[コミット SHA ハッシュ] が見つかりません」というエラーが表示されます。

クライアント オフィスから最後にデプロイしたときから、デプロイ スクリプトは変更されていません。

cap deploy の出力は次のとおりです。

  * 2012-11-14 18:52:34 executing `dev'
  * 2012-11-14 18:52:34 executing `setbranch'
  * 2012-11-14 18:52:34 executing `deploy'
  * 2012-11-14 18:52:34 executing `deploy:update'
 ** transaction: start
  * 2012-11-14 18:52:34 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:XXX123/reponame.git master"
    command finished in 2490ms
  * executing "if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi"
    servers: ["server.alias"]
    [server.alias] executing command
 ** [server.alias :: out] error: unable to find 8d28f09e2b85ebac6da912-github-commit-sha
 ** fatal: object 8d28f09e2b85ebac6da912-github-commit-sha not found
    command finished in 1681ms
 *** [deploy:update_code] rolling back
  * executing "rm -rf /home/serverusername/dev.site.com/code/releases/20121115025239; true"
    servers: ["server.alias"]
    [server.alias] executing command
    command finished in 293ms
failed: "sh -c 'if [ -d /home/serverusername/dev.site.com/code/shared/cached-copy ]; then cd /home/serverusername/dev.site.com/code/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 8d28f09e2b85ebac6da912-github-commit-sha && git clean -q -d -x -f; else git clone -q git@github.com:XXX123/reponame.git /home/serverusername/dev.site.com/code/shared/cached-copy && cd /home/serverusername/dev.site.com/code/shared/cached-copy && git checkout -q -b deploy 8d28f09e2b85ebac6da912-github-commit-sha; fi'" on server.alias

(クライアントを投影するために、出力コードの名前の一部を変更しました。)

Windows Vista PC でのセットアップに苦労しているときに、最初にこの問題に遭遇しました。Windows に問題があると考えて、Ubuntu 仮想ボックスをセットアップし、すぐに起動して実行したところ、同じ結果が得られました。

誰でも助けることができますか?

4

1 に答える 1

2

あなたの cap レシピが間違った SHA を探している可能性があるという意見には同意しますが、それが変更されていないと報告したため、最近私に起こったので、この可能性を破棄します。

ブランチに SHA がまだ存在することを確認します。

履歴の一部を書き直し、以前の SHA はレポにありませんでした。私git logはSHAを探します。使い捨てのブランチを作成して SHA git checkout -b lost_sha&&にリセットする方が速いかもしれませんgit reset --hard 8d28f09e2b85ebac6da912。SHA が見つからない場合、Git は文句を言います。

スクリプトは変更されていない可能性がありますが、リポジトリは変更されています。

于 2013-02-13T02:11:30.770 に答える