¿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?


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;

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.


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.


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


0

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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.