タイトルの地点で結構出落ちですが、本日少々厄介な問題にぶち当たってしまったので共有いたします。
発生条件
CocoaPods 0.34.0以上を使用し、GitHub:EnterpriseのgitリポジトリをPodSpecないしSourceリポジトリとして使用している場合に発生します。
発生する問題
CocoaPodsのgitを利用するアクションが全く成功しなくなります。具体的にはpod install, pod updateなどが全く通りません。
問題の原因
公式ブログにあるとおり、0.34.0以上からCocoaPodsは高速にgitリポジトリをcloneするため--depth 1 (shallow clone) オプションを採用するようになっています。しかしながらGitHub:Enterprise側の技術的問題なのか、GitHub:Enterprise内のgitリポジトリに対するhttpないしhttps経由でのshallow cloneが成功しないため永遠にpod installやpod updateが終わりません。
対処方法
- CocoaPodsを当面の間0.33.1のまま運用する。0.33.1を指定してインストールするときにはこちらのQiita記事が参考になります。
- http/httpsではなくssh clone URLを使用する。sshだと問題が起きないとの報告があります。GitHubに問い合わせてみたところやはりhttp/httpsのみで問題が発生するようです。
- ssh cloneがネットワーク上の問題などで使用できない場合、最後の回避策として:tagや:branchを使用しないで:commitを直指定するように社内のPodspecを書き直す。
根本的にはCocoaPodsかGitHub:Enterpriseかいずれかが修正されるのを待つしかありませんが、CocoaPods側としてはあまり積極的に対応する気がないようなので、GitHub:Enterprise側に対応を期待するしかないでしょうか。もちろん全てのGitHub:Enterprise環境下で発生するとは限りませんが、いずれにせよ注意する必要があります。
2014/10/01追記
GitHub:Enterpriseに問い合わせてみたところ、こちらは既知の問題であり現在修正中で、次のリリース時に修正されるそうです。次のリリースが社内環境にデプロイされるまでの辛抱ですね。
こちらからは以上です。