104
97

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-12-16

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

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

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


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

104
97
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
104
97

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?