¿Debería unir files .pbxproj con git usando merge = union?

Me pregunto si la opción merge = union en .gitattributes tiene sentido para los files .pbxproj.

La página de manual indica esta opción:

Ejecute la fusión de files de tres vías para files de text, pero tome líneas de ambas versiones, en lugar de dejar marcadores de conflicto. Esto tiende a dejar las líneas agregadas en el file resultante en order aleatorio y el usuario debe verificar el resultado.

Normalmente, esto debería estar bien para el caso del 90% de agregar files al proyecto. ¿Alguien tiene experiencia con esto?

No es una experiencia directa , sino:

  • Esta pregunta SO realmente aconseja fusionar .pbxproj files .pbxproj .

El file pbxproj no es realmente humano.
Si bien es text ASCII simple, es un forma de JSON . Básicamente, desea tratarlo como un file binary.

(de ahí una solución de gitignore )

En realidad, Peter Hosey agrega en el comentario:

Es una list de properties , no JSON. Mismas ideas, diferente syntax.

  • Sin embargo, de acuerdo con esta pregunta :

La verdad es que es mucho más dañino no permitir la fusión de ese file .pbxproj de lo que es útil.
El file .pbxproj es simplemente JSON (similar a XML). Por experiencia, casi el único conflicto de fusión que alguna vez obtuviste es si dos personas han agregado files al mismo time. La solución en el 99% de los casos de conflicto de fusión es mantener ambos lados de la fusión.

Por lo tanto, una 'unión' de fusión (con una directiva de combinación de gitattributes ) tiene sentido, pero realice algunas testings para ver si hace lo mismo que el script mencionado en la última pregunta.

  • Ver también esta pregunta para posibles conflictos.
  • Ver el artículo de Wikipedia sobre la list de properties

He estado trabajando con un equipo grande últimamente y probé *.pbxproj merge=union , pero al final tuve que eliminarlo.

El problema era que las llaves se volvían fuera de lugar regularmente, lo que hacía que los files fueran ilegibles. Es verdad que funciona la mayor parte del time, pero falla tal vez 1 de cada 4 veces.

Volvemos a usar *.pbxproj -crlf -merge por ahora. Esta parece ser la mejor solución que es viable para nosotros.