2012-04-25 4 views
19

Al guardar el guión gráfico y realizar los cambios en git, es muy probable que toda la sección <classes> se elimine o se agregue al control de código fuente (git). Estoy usando git en la línea de comandos, no en la interfaz de usuario integrada de XCode.¿Por qué git agrega y elimina la sección Storyboard <classes> repetidamente?

En primer lugar se parece a esto:

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

Y en la próxima confirmación se ve así:

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

¿Por qué, y lo más importante: ¿cómo puedo dejar que ?

+0

¿Realmente se agrega y se elimina, o se mueve en cada confirmación (es decir, en cada confirmación aparece como agregado y eliminado)? Porque lo posterior parece mucho más probable. –

+0

¿Las confirmaciones se realizan en la misma computadora? Y si no, ¿están hechos exactamente por la misma versión de Storyboard? –

+0

@JanHudec Agregado en una confirmación y eliminado en otra. Pude entender mover un bloque de código, pero esto sucede en commits separados. Somos 3 delevopers y analizaremos los dos aspectos que mencionaste. – ericteubert

Respuesta

10

(esta respuesta se basa la experiencia personal, y no es uno formal)

La sección classes en las listas de archivos .storyboard xml todos los controladores de vista que tiene en su proyecto con el fin de

  1. Permita que el Editor Asistente muestre el archivo fuente correcto cuando seleccione un elemento UI en el Creador de Interfaces, y
  2. Permita que el Inspector de Identidad (panel derecho) presente opciones para Clase Personalizada.

Supongo que esta sección es un caché, que se retira cuando los dos usos enumerados anteriormente no se han utilizado por un tiempo.

El hecho de que esta sección apareció en primer lugar implica que es seguro ignorarlo, ya que se genera automáticamente cuando es necesario. Si ya lo tiene comprometido y posteriormente aparece como eliminado en diff, abra el Inspector de identidad, despliegue la lista de clases disponibles en Clase personalizada y vea cómo existe toda la sección una vez más.

+1

Esta es una muy buena explicación. Pero aún así, ¿hay alguna manera de evitar esto? ¿Alguna manera de decirle a Xcode que mantenga esa sección en el Guión gráfico para siempre en lugar de eliminarla cuando Xcode lo parezca, y que la vuelva a agregar cuando abra el Guión gráfico? Enreda con los commits y es molesto. –

1

En mi experiencia, la eliminación solo ocurre si abre el guión gráfico y tiene errores relacionados con la existencia de clases. Un ejemplo de esto es abrir el guión gráfico mientras que un conflicto de fusión aún no se ha resuelto. Una o más clases pueden no ser analizables. En este caso, el generador de interfaz parece estar eliminando toda la sección y no solo la clase infractora.

Para mí se soluciona fácilmente abriendo el guión gráfico de nuevo después de que el parche esté listo en caso de que vea la eliminación. Si se resuelven todos los problemas, la sección se regenera. Si no es así, significa que tengo un problema con la configuración del proyecto y no debería comprometerme de ninguna manera.

Cuestiones relacionadas