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