Storyboard agak sakit kerajaan dari perspektif alur kerja git ketika banyak orang berkolaborasi pada mereka. Misalnya, XML dalam file .storyboard memiliki <document>
tag awal toolsVersion
dan systemVersion
atribut yang diubah oleh konfigurasi apa pun yang sedang dijalankan oleh manipulator file terbaru. Menyinkronkan semua versi Xcode tampaknya justru membantu toolsVersion
, tetapi systemVersion
perubahan apa pun yang terjadi, tergantung pada versi Mac dan / atau OS X tertentu yang sedang dijalankan pengembang.
Ini bodoh, tetapi kebanyakan tidak berbahaya. Yang membuat kami khawatir, adalah bahwa di waktu lain beberapa perubahan lain secara otomatis dibuat ke storyboard hanya dengan membukanya setelah a git pull
. Dengan kata lain, Alice membuat perubahan pada storyboard, melakukan dan mendorongnya ke repositori. Bob kemudian menarik perubahan Alice dan membuka papan cerita untuk membuat perubahan lebih lanjut. Saat dia membuka storyboard, ikon file segera berubah ke keadaan yang dimodifikasi tetapi tidak disimpan, dan git status
menunjukkan bahwa sejumlah perubahan aneh telah terjadi. Semua ini tanpa Bob telah mengubah apa pun atau menyimpan file sendiri.
Perubahan otomatis paling umum yang kami lihat adalah hilangnya atau kemunculan kembali seluruh <classes>
hierarki tag di dekat akhir file storyboard. Kami belum menemukan apa yang menyebabkan ini. Kami mungkin memiliki beberapa versi lokal storyboard di berbagai direktori .lproj, dan ketika membukanya di dalam Interface Builder, hierarki kelas dapat secara spontan dihapus dari beberapa dan ditambahkan ke yang lain, atau dibiarkan sendiri di beberapa. Ini menyebabkan banyak kebisingan git diff
, tetapi sebenarnya tidak merusak fungsionalitas apa pun. Kita akan sering secara selektif menambahkan perubahan aktual yang kita buat ke dalam indeks git, melakukan itu, dan kemudian hanya membuang spontan, tidak masuk akal<classes>
perubahan. Ini untuk menjaga komitmen kecil dan baik, sebagaimana mestinya. Namun, pada akhirnya, itu menjadi terlalu merepotkan karena Xcode terus melakukan perubahan lagi, dan seseorang hanya memeriksanya bersama dengan beberapa hal lain ... yang baik-baik saja sampai Xcode orang lain memutuskan ingin mengubahnya kembali tanpa alasan yang jelas. (Riwayat komit kami memiliki banyak sumpah untuk ini.)
Adakah orang lain yang melihat perilaku ini? Apakah ini bug Xcode atau masalah konfigurasi pada satu atau lebih Mac pengembang kami? Kami telah melihat beberapa perilaku serupa ketika berkolaborasi dengan file XIB, tetapi storyboard tampaknya lebih rentan terhadap ini.