MacOS xcodeのprojectをgitにコミットするための準備

xcodeのprojectをgitにコミットすることがあったので、コミットしない方がいいファイルを調べて除外しました。

$ cat ~/.gitignore

#Xcode 
build/*
*.mode1*
*.pbxuser

#SVN 
.svn/

#MacOS 
.DS_Store

#Windows 
Thumbs.db

プロジェクト毎に.gitignoreを作ってもいいけど、たぶん共通の設定にしても困る事も無いだろうという事で、作ってあった共通の .gitignore に追加しました。

$ cat ^/.gitconfig

[user]
	name = myuser
	email = myuser@example.com
[color]
	status = auto
	diff = auto
[core]
	excludesfile = /Users/myuser/.gitignore

ちなみに共通の .gitignore は .gitconfig に excludesfile を指定しておかないと認識されません。
.gitconfig はホームディレクトリにファイルがあれば、読み込まれます。

*.pbxproj binary
$ cat .gitattributes

*.pbxproj binary

バイナリ扱いにするために、.gitattributes を作成します。
どうやら共通のものは作れないようなので、プロジェクトのルートディレクトリに置きます。
xcodeでprojectを作るたびに、これを作らないといけないので、ちょっとめんどくさいかも。

たとえば、MacXcode プロジェクトの中には .pbxproj で終わる名前のファイルがあります。これは JSON (プレーンテキスト形式の javascript のデータフォーマット) のデータセットで、IDE がビルド設定などをディスクに書き出したものです。すべて ASCII で構成されるので、理論上はこれはテキストファイルです。しかしこのファイルをテキストファイルとして扱いたくはありません。実際のところ、このファイルは軽量なデータベースとして使われているからです。他の人が変更した内容をマージすることはできませんし、diff をとってもあまり意味がありません。このファイルは、基本的に機械が処理するものなのです。要するに、バイナリファイルと同じように扱いたいということです。

http://progit.org/book/ja/ch7-2.html