objective c - ¿Debo combinar archivos.pbxproj con git usando merge=union?
objective-c cocoa (2)
Me pregunto si la opción merge = union en .gitattributes tiene sentido para los archivos .pbxproj.
Los estados de la página de manual para esta opción:
Ejecute la combinación de niveles de archivos de 3 vías para archivos de texto, pero tome líneas de ambas versiones, en lugar de dejar marcadores de conflicto. Esto tiende a dejar las líneas agregadas en el archivo resultante en orden aleatorio y el usuario debe verificar el resultado.
Normalmente, esto debería estar bien para el caso del 90% de agregar archivos al proyecto. ¿Alguien tiene experiencia con esto?
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 iban a poner fuera de lugar de forma regular, lo que hacía que los archivos fueran ilegibles. Es cierto que funciona la mayor parte del tiempo, pero tal vez falla 1 de cada 4 veces.
Volvemos a utilizar *.pbxproj -crlf -merge
por ahora. Esta parece ser la mejor solución que es viable para nosotros.
No es una experiencia directa , pero:
- Esta pregunta SO realmente aconseja de nuevo fusionar archivos
.pbxproj
.
El archivo
pbxproj
no es realmente humano fusionable.
Si bien es un texto ASCII simple, es unforma de JSON. Esencialmente quieres tratarlo como un archivo binario.
(De ahí una solución gitignore
)
En realidad, Peter Hosey agrega en el comentario:
Es una lista de propiedades , no JSON. Las mismas ideas, sintaxis diferente.
- Sin embargo, según esta pregunta :
La verdad es que es más dañino evitar la combinación de ese archivo .pbxproj que lo que es útil.
El archivo.pbxproj
essimplemente JSON(similar a XML). Por experiencia, casi el ÚNICO conflicto de combinación que alguna vez obtuviste es si dos personas agregaron archivos al mismo tiempo. 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 fusión ''unión'' (con una directiva de fusión de gitattributes
) tiene sentido, pero haga algunas pruebas para ver si hace lo mismo que el script mencionado en la última pregunta.
- Vea también esta pregunta para conflictos potenciales.
- Vea el artículo de Wikipedia en la Lista de propiedades