Gli storyboard sono piuttosto una sofferenza reale dal punto di vista del flusso di lavoro git quando più persone collaborano su di essi. Ad esempio, l'XML nel file .storyboard ha i suoi <document>
tag di partenza toolsVersion
e gli systemVersion
attributi modificati da qualunque configurazione sia in esecuzione il manipolatore di file più recente. Sincronizzare con precisione le versioni di Xcode di tutti sembra aiutare toolsVersion
, ma systemVersion
cambia qualunque cosa, a seconda della specifica versione di Mac e / o OS X che lo sviluppatore sta eseguendo.
Questo è idiota, ma per lo più innocuo. Ciò che ci preoccupa, tuttavia, è che altre volte vengono apportate automaticamente altre modifiche allo storyboard semplicemente aprendole dopo un git pull
. Vale a dire, Alice apporta modifiche allo storyboard, si impegna e le inserisce nel repository. Bob quindi tira le modifiche di Alice e apre lo storyboard per apportare ulteriori modifiche. Nel momento in cui apre lo storyboard, l'icona del file cambia immediatamente in uno stato modificato ma non salvato, e git status
mostra che si è verificato un numero qualsiasi di strani cambiamenti. Tutto questo senza che Bob abbia cambiato nulla o salvato il file da solo.
Il cambiamento automatico più comune che stiamo vedendo è la scomparsa o la ricomparsa dell'intera <classes>
gerarchia dei tag vicino alla fine di un file dello storyboard. Non abbiamo capito cosa sta causando questo. Potremmo avere diverse versioni localizzate di uno storyboard in varie directory .lproj e quando le si apre in Interface Builder, la gerarchia di classi può essere spontaneamente rimossa da alcune e aggiunta ad altre o lasciata sola in alcune. Ciò provoca molto rumore git diff
, ma in realtà non interrompe alcuna funzionalità. Aggiungiamo spesso in modo selettivo le modifiche effettive apportate all'indice di Git, le commettiamo e quindi scartiamo il spontaneo, senza senso<classes>
i cambiamenti. Questo per mantenere gli impegni piccoli e carini, come dovrebbero essere. Alla fine, però, diventa troppo preoccuparsi poiché Xcode continua a ripetere le modifiche, e qualcuno le consiglia semplicemente insieme ad altre cose ... il che va bene fino a quando l'Xcode di qualcun altro non decide di volerle cambiare di nuovo per no ragione apparente. (La nostra cronologia degli impegni ha parecchie imprecazioni.)
Qualcun altro vede questo comportamento? Si tratta di un bug Xcode o di un problema di configurazione su uno o più Mac per sviluppatori? Abbiamo visto un comportamento simile durante la collaborazione con i file XIB, ma gli storyboard sembrano più sensibili a questo.