dans un projet XCode, j'ai souvent eu le fichier xcodeproject/project.pbxproj modifié, mais des informations inutiles pour moi, pour la compilation.
Dois-je ignorer ce fichier et le fichier xcodeproject/projectxworkspace/username.xcuserdata/UserInterfaceState.xcuserstate?
Mise à jour à la lumière de Swift Package Manager: Si vous construisez un projet en tant que Swift package - vous devez absolument ignorer ce fichier car il peut être généré en utilisant le système de fichiers comme source de vérité. Vous pouvez le faire en utilisant la commande suivante:
$ cd ~/Projects/MyProjectFolder/
$ Swift package generate-xcodeproj
Pour une réponse non SwiftPM - voir ci-dessous.
Ce fichier contient la liste de tous les fichiers du projet, les paramètres des cibles et les fichiers appartenant à quelles cibles. C'est probablement le fichier le plus charnu du bundle de projet. Vous ne devriez pas ignorer ce fichier. Il y a peu de points à cela:
C'est le seul fichier que vous souhaitez dans vos dépôts à partir du bundle xcodeproj. Ce fichier contient toutes les informations sur les fichiers cibles et les paramètres de génération.
Si vous excluez project.pbxproj, les générations Jenkins échoueront. C'est donc important si vous utilisez Jenkins.
Malheureusement, si vos paramètres de build incluent la signature de code, vous devez ressaisir votre entité de signature de code après chaque "git pull" si un autre membre de l'équipe l'a changé. Il me semble que cette information devrait se trouver dans les paramètres utilisateur et non dans le fichier global pbxproj.
J'ai constaté que je dois également conserver les fichiers xcworkspace. Sinon, le projet avec un sous-projet a échoué.
Vous pouvez utiliser Xcodegen pour générer un pbxproj à partir d'un fichier de spécification de projet YAML, puis vous pouvez ignorer pbxproj dans git et les générer à chaque fois que vous en avez besoin.
J'ai déjà utilisé Xcodegen sur un deuxième projet qui a une architecture modulaire (de nombreux pbxprojs) et plus de 8 développeurs y travaillent.
https://github.com/yonaskolb/XcodeGen
J'espère que ça aide.