Help us understand the problem. What is going on with this article?

pbxprojファイルのマージが便利になるmergepbxをインストールするスクリプト書いた

More than 3 years have passed since last update.

まず、作ったスクリプトファイルです。

https://gist.github.com/kaneshin/40d9331941682bf46f5d

mergepbxとは

simonwagner/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を行ってください。

そこでコンフリクトしたら、もうしょうがないです。はい。


このインストールスクリプトに何か修正などしたければご自由にどうぞ

https://gist.github.com/kaneshin/40d9331941682bf46f5d

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away