ストーリーボードは、複数の人が共同で作業しているときのgitワークフローの観点から見るとかなり重要な問題です。たとえば、.storyboardファイル内のXMLの開始<document>
タグtoolsVersion
とsystemVersion
属性は、最新のファイルマニピュレータが実行している構成によって変更されます。全員のXcodeバージョンを同期することはに役立つようですtoolsVersion
がsystemVersion
、開発者が実行している特定のMacやOS Xのバージョンに応じて、何が変わっても変わります。
これはばかげていますが、ほとんど無害です。しかし、心配なのは、他の場合には、他の変更がの後に開くだけで自動的にストーリーボードに加えられることgit pull
です。つまり、アリスはストーリーボードに変更を加え、コミットしてリポジトリにプッシュします。次に、ボブはアリスの変更をプルし、ストーリーボードを開いてさらに変更を加えます。彼がストーリーボードを開くと、ファイルのアイコンはすぐに変更されたが保存されていない状態にgit status
変わり、変な変更がいくつも発生したことが示されます。ボブが何かを変更したり、ファイルを自分で保存したりせずに、これらすべてが行われました。
私たちが目にしている最も一般的な自動化された変更<classes>
は、ストーリーボードファイルの終わり近くにあるタグ階層全体の消失または再出現です。何が原因なのかはわかりません。さまざまな.lprojディレクトリにローカライズされたストーリーボードのバージョンがいくつかあり、それらをInterface Builder内で開くと、クラス階層が一部から自発的に削除されて他に追加されるか、一部が単独で残る場合があります。これにより、で多くのノイズが発生しますがgit diff
、実際には機能が損なわれることはありません。多くの場合、gitのインデックスに実際に加えた変更を選択的に追加し、それらをコミットしてから、自然発生的な無意味なだけを破棄します<classes>
変更。これは、コミットを本来あるべき状態に保つためです。しかし、最終的には、Xcodeが変更を再実行し続け、誰かが他のいくつかのものと一緒に激しくコミットするので、煩わしくなりすぎます...他の誰かのXcodeがそれらを元に戻して変更しないことを決定するまでは問題ありません明らかな理由。(私たちのコミット履歴には、これについて多くの悪口があります。)
他の誰かがこの動作を見ていますか?これは、Xcodeのバグですか、それとも1つ以上の開発者用Macの構成の問題ですか?XIBファイルを使用して共同作業するとき、いくつかの同様の動作を見てきましたが、ストーリーボードの方が影響を受けやすいようです。