2012-04-25 17 views
19

Quando si salva lo storyboard e si eseguono le modifiche a git, è probabile che l'intera sezione <classes> venga rimossa o aggiunta al controllo del codice sorgente (git). Sto usando git sulla riga di comando, non l'interfaccia utente integrata di XCode.Perché git aggiunge e rimuove la sezione Storyboard <classes> ripetutamente?

In primo luogo sembra che questo:

+ <classes> 
+  <class className="CPTGraphHostingView" superclassName="UIView"> 
+   <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/> 
+  </class> 
... 
+ </classes> 

E nel prossimo commit sembra che:

- <classes> 
-  <class className="CPTGraphHostingView" superclassName="UIView"> 
-   <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/> 
-  </class> 
... 
- </classes> 

Perché questo, e, cosa più importante: come posso impedire che ?

+0

E 'davvero aggiunto, cancellato o spostato in ogni commit (cioè in ogni commit compare sia come aggiunto che cancellato)? Perché più tardi sembra molto più probabile. –

+0

I commit sono fatti sullo stesso computer? E se no, sono fatti esattamente dalla stessa versione di Storyboard? –

+0

@JanHudec Aggiunto in un commit e cancellato in un altro. Potrei capire di spostare un blocco di codice, ma questo accade in commit separati. Siamo 3 delevopers e esamineremo i due aspetti che hai citato. – ericteubert

risposta

10

(questa risposta si basa esperienza personale, e non è una formale uno)

La sezione classes nelle liste di file .storyboard XML Tutti i controller di vista che avete nel vostro progetto al fine di

  1. Consenti all'Editor Assistente di visualizzare il file di origine corretto quando si seleziona un elemento dell'interfaccia utente in Interface Builder e
  2. Consente a Identity Inspector (pannello di destra) di presentare le opzioni per la classe personalizzata.

Immagino che questa sezione sia una cache, ritirata quando entrambi i due usi sopra elencati non sono stati utilizzati per un po '.

Il fatto che questa sezione sia stata visualizzata in primo luogo implica che è sicuro ignorarlo, poiché viene generato automaticamente in base alle necessità. Se l'hai già commesso, e successivamente lo fai apparire come rimosso su diff, apri Identity Inspector, seleziona l'elenco di classi disponibili in Custom Class e guarda come l'intera sezione esiste ancora.

+1

Questa è una spiegazione molto buona. Ma ancora, c'è un modo per evitarlo? Un modo per dire a Xcode di mantenere quella sezione sullo Storyboard per sempre invece di rimuoverla quando Xcode si sente come tale, e di aggiungerla di nuovo quando apri lo Storyboard? Fa casino con i commit e il suo fastidio. –

1

Nella mia esperienza, la rimozione avviene solo se si apre lo storyboard e si verificano errori relativi all'esistenza della classe. Un esempio di ciò è l'apertura dello storyboard mentre un conflitto di unione non è stato ancora risolto. Una o più classi potrebbero non essere analizzabili. In questo caso il builder dell'interfaccia sembra rimuovere l'intera sezione e non solo la classe offendente.

Per me è facilmente risolvibile aprendo di nuovo lo storyboard dopo che la patch è pronta nel caso in cui vedo la rimozione. Se tutti i problemi sono risolti, la sezione viene rigenerata. Se non lo è, significa che ho un problema con le impostazioni del progetto e non dovrei comunque commetterlo.

Problemi correlati