Cómo evitar conflictos en el proyecto Xcode (.pbxproj)

| Última modificación: 10 de abril de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Conflictos en pbxproj (Xcode) con Git

Con una frecuencia sorprendente he visto como algunos equipos se quejan de tener conflictos con git en el proyecto de Xcode (.pbxproj) y no saben cómo evitarlo.

El fichero pbxproj es una property list, es decir un tipo de xml y en principio no debería haber casi posibilidades de conflicto.

La única forma de tener un conflicto con git en un fichero pbxproj es si dos usuarios han añadido un fichero en el mismo momento al mismo grupo. Incluso esto no debería de ser problemático, ya que Xcode usa unos identificadores únicos. Lo malo es que dichos identificadores únicos, no son tan únicos como deberían…

Así que si en tu equipo tenéis conflictos con git en el proyecto de Xcode (pbxproj), no desesperes, hay gente con problemas peores:

 

Como la forma más común de generar un conflicto es añadiendo dos ficheros (uno cada usuario) en el mismo grupo, la cura más probable para ese conflicto es quedarse con ambas versiones, es decir, aceptar ambos cambios.

Soluciones a los conflictos con pbxproj

a) La Manual, usando la herramienta “File Merge” que viene con Xcode.

Xcode -> Open Developer Tool -> File Merge

Esta herramienta entiende el formato de los pbxproj y puede arreglar fácilmente casi cualquier desaguisado.

b) La automágica, indicándole a git que siempre se quede con ambas modificaciones del fichero:

# Añade esto a tu fichero .gitignore
*.pbxproj merge=union

# Por cierto, esto es un comentario en un gitignore.
# Es decir, es algo que se ignora dentro de una lista de cosas
# que hay que ignorar. ¡Qué bonita es la recursividad!

Usa esto último con precaución y haz pruebas antes de ponerlo en producción.

Si quieres saber más de Git, te recomiendo nuestro curso de git. Jamás una herramienta aumentó tanto mi productividad como saber bien Git y TDD. Palabra de friki.

 

Fernando Rodríguez

iOS Developer & Co-Fundador de KeepCoding

Posts más leídos