インデントは space4 派です。
インストールした直後の Xamarin Studio や Visual Studio for Mac の設定だと、インデントが tab になっています。
この状態で開発を始めてしまうと、意図せず tab がコードに挿入され、リポジトリに push してしまい、 github で見た時に初めて気づき ヽ(`Д´#)ノ ムキー!! となるので、早めに手を打ちましょう。
できればインストールした直後にやっておきたい設定。 そもそもこの既定の設定値が Visual Studio for Win と異なるからいろいろ不幸が起こると思われ。
メニュー -> Xamarin Studio -> ユーザー設定 で「ユーザー設定」画面を起動し、ソースコード -> コードの書式設定 -> C# ソースコードを選択し、以下のように、
と設定します。(ポリシーで Visual Sutdio を選択すればいいんじゃん!)
ソースコードの書式設定が、ソリューションまたはプロジェクト毎にされている場合、第一の砦を突破される可能性があります。
ソリューションまたはプロジェクトを右クリックして、オプションを選択し、先ほどと同じように ソースコードの書式設定 を見直します。
Windows と Mac で共同作業する場合は、プロジェクト作成時に、この設定を明示的に行っておくのがよいと思います。
Xamarin Studio やプロジェクトの設定だけでは不安な場合は、最後の砦として、git のコミット時に tab を空白に変換してしまいましょう。
Terminal で、
brew install coreutils
を実行します。 homebrew が入っていない場合は、
などを見て先にインストールしてください。
Terminal で、
git config --global filter.tabspace.clean 'expand -t 4'
を実行します。
これは、 「"tabspace" という名前のフィルターを作成する」という意味です。--global
を付けていますが、個別のローカルリポジトリにのみ適用する場合は --local
として、ローカルリポジトリのディレクトリで実行してください。尚、この設定はリモートへは適用されません。
ローカルリポジトリに .gitattributes
というテキストファイルを作成し、以下を追記します。
*.cs filter=tabspace
「2 で作成したフィルタ "tabspace" を、拡張子 *.cs に適用する」という意味です。
.gitattributes
はリモートに送信されます。
Terminal で、
git rm -r --cached .
git add .
を実行します。
すべてのファイルを一旦キャッシュから削除して再追加してあげることでフィルタを適用します。(上記リンクでは git checkout HEAD -- **
が紹介されてましたがうまくいかなかったんですよね。。)
リポジトリ内の *.cs ファイルに tab が含まれていた場合は、この操作で、それらのステータスが modified になり tab が space に変換されているでしょう。そのまま git commit
すると、tab が space でコミットされます。
変更したファイルに tab があるとそれは space に変換されるし、テキストエディタで意図的に tab を挿入しても、space に変換されます。
さまざまな人がコミットするプロジェクトの管理者の立場で、 tab でなく space の使用をできるだけ強制したい場合は、
.gitattributes
をリポジトリに含めるgit config --global filter.tabspace.clean 'expand -t 4'
を作業Macで実行してもらうが現状ですぐに採用できる対策かと思います。
1 をしないと、各作業者の環境の設定値が適用されてしまうので、明示的に設定した方が良いと思います。
git の filter は --global
だと複数のリポジトリで衝突する可能性があるので、 --local
の方が無難とも思います。