project.pbxprojのgitでの扱いについてとconflictの解消
参考サイト
ググったらCOMPHORのサイトだった!COMPHORすぎょい。
Xcode+gitのワークフロー考察 - CAMPHOR- Tech Blog
pbxprojとは
Xcodeのプロジェクトをgitで管理することの障壁を作っていると思われるproject.pbxproj
。こいつは、
- プロジェクトの設定を変えた時
- プロジェクトにファイルを追加した時
に変更されます。
なので
- クラスを追加した
- 画像、音声などを追加した
- バージョン情報などのプロジェクトの設定を変更した
ときとかに変わります。そしてこれらのいずれかが変更されたブランチ同士のmergeだと、ほぼ毎回conflictします。自分で解消するハードルが高いのがかなり辛いです。
どうする?
さきほどのCOMPHORさんの記事では、
基本的にはproject.pbxprojの変更を共有できるようにすればいいので方針としてはproject.pbxprojが変更されるたびにmaster(or dev)に反映させるのがいいと思います。 Xcode+gitのワークフロー考察 - CAMPHOR- Tech Blog
とされています。
たしかに...。中々.gitignore
するのもいろいろ問題が発生しそうなので、開発方針として決めておくしかないのかなと思います。
基本的にTopic Branchではproject.pbxprojを変更しないようにする、project.pbxprojをmasterかdevなどのメインのブランチで変更した場合はすぐに各ブランチでpullする。など...。
Xcodeのgitツール、かなり作りこまれていてすごいのでもう少しがんばってほしい。
conflictしてしまったら...
conflictしてしまった場合は、以下のmergepbxを使うのが良いと思います。
READMEに詳しく導入方法なども書いてあるので参考になります。
社内プロジェクトからOSSにするパターン、いいなー。