11

私のリポジトリは Recurly-js のカスタマイズされたバージョンを使用しており、https: //devcenter.heroku.com/articles/git-submodules の手順を使用してサブモジュールとしてパッケージ化しました。ただし、デプロイしようとすると、次のエラーが表示されます。

----> Heroku receiving push 
-----> Git submodules detected, installing
       Submodule 'recurly-js' (/app/tmp/repo.git/recurly-js) registered for path 'recurly-js'
       Initialized empty Git repository in /tmp/build_3iacvn8h2rnha/recurly-js/.git/
       fatal: '/app/tmp/repo.git/recurly-js' does not appear to be a git repository
       fatal: The remote end hung up unexpectedly
       Clone of '/app/tmp/repo.git/recurly-js' into submodule path 'recurly-js' failed
 !     Heroku push rejected, Submodule install failed
4

3 に答える 3

16

@jeffrey-kの回答へのコメントとして回答を提供しましたが、今ではさらに確信が持てるようになりました。ここに書きます。

私のレポは突然プッシュを停止し、次の2つのことが「修正」されました。

  1. すべてのパブリック サブモジュール URL (ある場合) を、ssh トランスポート URL の使用から読み取り専用の git トランスポート URL に変更します (つまり、 からgit@github.com:yaniv-aknin/public-projectgit://github.com/yaniv-aknin/public-project)。これを行うに.gitmodulesは、リポジトリのルートで呼び出されるファイルを編集する必要があります。
  2. すべてのプライベート サブモジュール (存在する場合) をレポから削除します (.gitmodulesおよびrm -frそのディレクトリから削除します)。
  3. 変更をコミットします。

これにより、次の 2 つの動作の変更が処理されます。

  1. Heroku は、ssh トランスポートを使用して github からサブモジュールを複製することができました (おそらく、いくつかの「一般的な heroku ssh キー」と github アカウントがありましたが、確かではありません)。
  2. Heroku は、失敗したサブモジュールを無視して、プッシュを続行していました。

分析が正しいかどうか、なぜ変更が発生したのかを尋ねるチケットを開きました(警告を聞くことができませんでした)-何か新しいことを学べば、この回答を更新します。

更新: Heroku のサポートの Noah が私のチケットに返信し、私が上で言ったことを大部分認めました。パブリック リポジトリの URL を変更する必要があります。プライベート リポジトリは削除するか、このドキュメントに従ってクレデンシャルを埋め込む必要があります。後者のソリューションには、明らかにセキュリティ上の影響があります。

于 2012-11-13T15:50:00.120 に答える
1

この答えのように見えます - https://stackoverflow.com/a/8768240 - 物語を語っています。Heroku は、プライベート リポジトリである git サブモジュールを受け入れません。私のバージョンの recurly-js は、フォークされた非プライベート リポジトリです。

于 2012-11-13T14:41:10.860 に答える