CocoaPodsなプロジェクトで複数ブランチを行き来する際に"sandbox is not in sync"でイライラしない方法

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

複数人で開発を行っていると、ライブラリの追加やアップデート等でブランチ間のPodfileに差分が生じる事がある。
コードレビュー等のためにブランチ間を行き来していると、XCodeビルドを走らせてからこのようなエラーが出てpod installが必要と気づく事が多い。

error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

できればブランチを切り替えた際必要に応じて自動でpod installしたい。

とか考えてたが、超単純にGitのpost-checkoutでPodfile.lockと${PODS_ROOT}/Manifest.lockのdiffを見ればいいだけだった。

.git/hooks/post-checkout
diff Podfile.lock Pods/Manifest.lock > /dev/null
if [[ $? != 0 ]]; then
  echo "Sandbox needs to be updated. Re-installing libraries..."
  bundle exec pod install
fi

これでチェックアウト先でpodsの再インストールが必要であればpod installが開始される。