¿Debo ignorar el archivo xcodeproject / project.pbxproj?

101

en un proyecto XCode, a menudo tengo el archivo xcodeproject / project.pbxproj cambiado, pero información inútil para mí, para compilar.

¿Debo ignorar este archivo y el archivo xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?

qichunren
fuente
Los archivos .xcuserstate se pueden ignorar, pero no el archivo pbxproj.
Kendall Helmstetter Gelner
No, aquí está su respuesta: stackoverflow.com/questions/49478/…
jeswang

Respuestas:

128

Actualización a la luz de Swift Package Manager: si está creando un proyecto como un paquete Swift, definitivamente debe ignorar este archivo, ya que se puede generar utilizando el sistema de archivos como fuente de verdad. Puedes hacerlo usando el siguiente comando:

$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj

Para respuestas que no sean de SwiftPM, consulte a continuación.

Este archivo contiene la lista de todos los archivos del proyecto, la configuración de los objetivos y los archivos que pertenecen a qué objetivos. Probablemente sea el archivo más sustancioso del paquete del proyecto. No debe ignorar este archivo. Hay algunos puntos para esto:

  1. Es posible que no desee trabajar en este proyecto solo o;
  2. Está pensando en trabajar en un proyecto desde diferentes máquinas;
  3. Querrá compartir su base de código con otros;
Eimantas
fuente
6

Ese es el único archivo que desea en sus repositorios del paquete xcodeproj. Ese archivo contiene toda la información de los archivos de destino y la configuración de compilación.

Grady Player
fuente
1
Esta respuesta pudo haber sido cierta alguna vez, pero actualmente es incorrecta. No es cierto que contenga "toda la información" (varias cosas, por ejemplo, los ejecutables personalizados se almacenan en un archivo diferente, por ejemplo, los espacios de trabajo se almacenan en un archivo diferente, etc.), ni es cierto que sea el "único archivo" que quiere almacenar. cf la pregunta sobre qué incluir en .gitignore - stackoverflow.com/questions/49478/…
Adam
1
eso parece bien pensado ... sigue eso en el futuro.
Grady Player
4

Desafortunadamente, si su configuración de compilación incluye la firma de código, debe volver a ingresar su entidad de firma de código después de cada "git pull" si otro miembro del equipo lo ha cambiado. Me parece que esta información debería estar en la configuración del usuario, no en el archivo pbxproj global.

Julius Smith
fuente
2
Puede configurar la firma de código para que cada uno de ustedes en el proyecto tenga un perfil de firma de código diferente que coincida con la misma configuración (compartida) en el proyecto, p. Ej., Utilizando un nombre comodín y luego cada uno de ustedes combinándolo por separado, o por ejemplo, todos están en el mismo equipo de iTunes y comparten perfiles.
Adam
3

Si excluye project.pbxproj, las compilaciones de Jenkins fallarán. Entonces esto es importante si usa Jenkins.

Joseph Bolade Caxton-Idowu
fuente
0

Descubrí que también necesito preservar el (los) archivo (s) xcworkspace. Si no, el proyecto con un subproyecto se rompió.

Paul Cezanne
fuente
0

Puede usar Xcodegen para generar un pbxproj a partir de un archivo de especificación de proyecto YAML, luego puede ignorar pbxproj en git y generarlo cada vez que lo necesite.

Ya usé Xcodegen en un segundo proyecto que tiene una arquitectura modular (muchos pbxprojs) y más de 8 desarrolladores están trabajando en él.

https://github.com/yonaskolb/XcodeGen

Espero eso ayude.

Cyril Cermak
fuente
0

project.pbxproj es un archivo importante en el paquete de configuración de Xcode. Es responsable de mantener referencias a todos los archivos vinculados y sus agrupaciones, marcos vinculados y, lo más importante, la configuración de compilación del proyecto. Debido a esto, no podemos excluir project.pbxproj del control de versiones.

Aquí está mi general .gitignorepara mi proyecto Xcode.

# OS X Finder
.DS_Store

# Xcode per-user config
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser
*.xcworkspace
xcuserdata

# Build products
build/
*.o
*.LinkFileList
*.hmap

# Automatic backup files
*~.nib/
*.swp
*~
*.dat
*.dep
James
fuente