Los guiones gráficos son más bien un dolor real desde la perspectiva del flujo de trabajo de git cuando varias personas colaboran en ellos. Por ejemplo, el XML en el archivo .storyboard tiene sus <document>
etiquetas toolsVersion
y systemVersion
atributos iniciales alterados por cualquier configuración que esté ejecutando el manipulador de archivos más reciente. Sincronizar las versiones de Xcode de todo el mundo parece ayudar con precisión toolsVersion
, pero systemVersion
cambia sin importar qué, dependiendo de la versión específica de Mac y / o OS X que el desarrollador esté ejecutando.
Esto es idiota, pero sobre todo inofensivo. Sin embargo, lo que nos preocupa es que en otros momentos se realizan automáticamente otros cambios en el guión gráfico simplemente abriéndolos después de a git pull
. Es decir, Alice realiza cambios en un guión gráfico, los confirma y los empuja al repositorio. Bob luego saca los cambios de Alice y abre el guión gráfico para realizar más cambios. En el momento en que abre el guión gráfico, el icono del archivo cambia inmediatamente a un estado modificado pero no guardado, y git status
muestra que se han producido varios cambios extraños. Todo esto sin que Bob haya cambiado nada o guardado el archivo él mismo.
El cambio automático más común que estamos viendo es la desaparición o reaparición de toda la <classes>
jerarquía de etiquetas cerca del final de un archivo de guión gráfico. No hemos descubierto qué está causando esto. Es posible que tengamos varias versiones localizadas de un guión gráfico en varios directorios .lproj, y al abrirlos dentro de Interface Builder, la jerarquía de clases puede eliminarse espontáneamente de algunos y agregarse a otros, o dejarse solo en algunos. Esto causa mucho ruido git diff
, pero en realidad no interrumpe ninguna funcionalidad. A menudo agregaremos selectivamente los cambios reales que realizamos en el índice de git, los confirmaremos y luego simplemente descartaremos lo espontáneo y sin sentido.<classes>
cambios Esto es para mantener compromisos pequeños y agradables, como deberían ser. Eventualmente, sin embargo, se vuelve demasiado molesto ya que Xcode sigue volviendo a hacer los cambios, y alguien simplemente los confirma junto con otras cosas ... lo cual está bien hasta que el Xcode de otra persona decida querer volver a cambiarlos sin ningún problema. razón aparente. (Nuestra historia de compromiso tiene muchas palabrotas sobre esto).
¿Alguien más está viendo este comportamiento? ¿Es esto un error de Xcode o un problema de configuración en uno o más de nuestros Mac para desarrolladores? Hemos visto un comportamiento similar al colaborar con archivos XIB, pero los guiones gráficos parecen más susceptibles a esto.