まず、作ったスクリプトファイルです。
mergepbxとは
Xcodeのプロジェクトの構成情報をもつpbxprojファイルをGitでマージするときに手助けしてくれるものです。
pbxprojファイルはコンフリクトすると厄介で、丁寧に直さないと簡単に壊れてしまいます。
複数人のプロジェクトでお互いに大きくプロジェクトファイルを変更した場合や、ブランチ間でのマージ時に非常に役立つはずなので、iOS/Mac開発者は是非入れたほうがいいです。
mergepbxのインストール方法
これだけ
curl -s https://gist.githubusercontent.com/kaneshin/40d9331941682bf46f5d/raw/42e2a7df2d8dbf6c956edcd3fd1c332e3364f573/install_mergepbx.sh | sh
これをターミナルで叩けば /usr/local/bin
に勝手にインストールされます。
/usr/local/bin
が嫌ならば、フォークするなりして MERGEPBX_PREFIX
に好きなインストール先を指定して各自に実行してください。
mergepbxがインストールされ
れば、残りは使用するプロジェクトの.gitattributes
にmergeの設定を追加で終わりです。
.gitattributes (無ければプロジェクトリポジトリ直下に作成する)
*.pbxproj merge=mergepbx
スクリプトを使わずにmergepbxをビルドする
「お前が用意したスクリプトをcurl経由で実行するのが怖い」。
あるあるですね。
そんな方でも問題ないです。
自分でビルドするのはとても簡単です。
1. mergepbxをcloneする
simonwagner/mergepbxからcloneしてきてください。
git clone https://github.com/simonwagner/mergepbx.git /tmp/mergepbx
2. mergepbxをbuildする
cloneしたディレクトリに移動して、build.py
を実行する
cd /tmp/mergepbx
./build.py
# /tmp/mergepbx/build.py でもok
3. mergepbxをcopy/move
mergepbxをPATHの通ってるとこに移動します。
cp mergepbx /usr/local/bin
# cp /tmp/mergepbx/mergepbx /usr/local/bin
/usr/local/bin
は各自で変えてください。
4. ~/.gitconfigにmergepbx設定を追加する
グローバルかローカルプロジェクトの.gitconfig
にmergepbxの設定を追加します。
git config --global merge.mergepbx.name "Xcode project files merger"
git config --global merge.mergepbx.driver "mergepbx %O %A %B"
.gitconfig
に下記が追加されます
[merge "mergepbx"]
name = Xcode project files merger
driver = mergepbx %O %A %B
5. .gitattributesにmergeの設定を追加する
.gitattributes (無ければプロジェクトリポジトリ直下に作成する)
*.pbxproj merge=mergepbx
これで、pbxprojファイルのmergeに関してmergepbxが使用されます。
さいごに
mergepbxは再帰的に見ているのか、処理に時間を使うことがたまにあります。
そして、タイムアウト?か何かによって最後まで終わらないとpbxprojの中身が相当分消えることもあります。
そうなった場合は一度リポジトリをリセットして、.attributesのmerge設定を無効にしてから普通にmergeを行ってください。
そこでコンフリクトしたら、もうしょうがないです。はい。
このインストールスクリプトに何か修正などしたければご自由にどうぞ