Storyboards sind aus Sicht des Git-Workflows eher ein königlicher Schmerz, wenn mehrere Personen an ihnen zusammenarbeiten. Beispielsweise werden für das XML in der .storyboard-Datei die Start- <document>
Tags toolsVersion
und systemVersion
Attribute geändert, je nachdem, welche Konfiguration der neueste Dateimanipulator gerade ausführt . Die genaue Synchronisierung aller Xcode-Versionen scheint hilfreich zu sein toolsVersion
, systemVersion
ändert sich jedoch unabhängig von der jeweiligen Mac- und / oder OS X-Version, die der Entwickler ausführt.
Das ist idiotisch, aber meistens harmlos. Was uns jedoch beunruhigt, ist, dass zu anderen Zeiten einige andere Änderungen automatisch am Storyboard vorgenommen werden, indem sie nach a geöffnet werden git pull
. Das heißt, Alice nimmt Änderungen an einem Storyboard vor, schreibt sie fest und schiebt sie in das Repository. Bob zieht dann Alices Änderungen und öffnet das Storyboard, um weitere Änderungen vorzunehmen. Sobald er das Storyboard öffnet, wechselt das Dateisymbol sofort in einen geänderten, aber nicht gespeicherten Zustand und git status
zeigt an, dass eine beliebige Anzahl seltsamer Änderungen aufgetreten ist. All dies, ohne dass Bob etwas geändert oder die Datei selbst gespeichert hat.
Die häufigste automatisierte Änderung ist das Verschwinden oder Wiedererscheinen der gesamten <classes>
Tag-Hierarchie am Ende einer Storyboard-Datei. Wir haben nicht herausgefunden, was dies verursacht. Möglicherweise befinden sich mehrere lokalisierte Versionen eines Storyboards in verschiedenen .lproj-Verzeichnissen. Wenn Sie diese in Interface Builder öffnen, wird die Klassenhierarchie möglicherweise spontan von einigen entfernt und in andere eingefügt oder in einigen allein gelassen. Dies verursacht viel Rauschen git diff
, beeinträchtigt jedoch keine Funktionalität. Wir werden oft selektiv die tatsächlichen Änderungen, die wir vorgenommen haben, in den git-Index einfügen, diese festschreiben und dann einfach das spontane, unsinnige verwerfen<classes>
Änderungen. Dies dient dazu, die Commits klein und nett zu halten, wie sie sein sollten. Irgendwann wird es jedoch einfach zu viel, um sich damit zu beschäftigen, da Xcode die Änderungen immer wieder wiederholt und jemand sie zusammen mit einigen anderen Dingen erneut zusagt ... was in Ordnung ist, bis der Xcode eines anderen beschließt, sie für Nein zurück zu ändern ersichtlichen Grund. (Unsere Commit-Geschichte hat viel Schwur darüber.)
Hat jemand anderes dieses Verhalten gesehen? Ist dies ein Xcode-Fehler oder ein Konfigurationsproblem auf einem oder mehreren unserer Entwickler-Macs? Wir haben bei der Zusammenarbeit mit XIB-Dateien ein ähnliches Verhalten festgestellt, aber Storyboards scheinen dafür anfälliger zu sein.