Dois-je git ignorer le fichier xcodeproject / project.pbxproj?

101

dans un projet XCode, j'ai souvent changé le fichier xcodeproject / project.pbxproj, mais des informations inutiles pour moi, pour la compilation.

Dois-je git ignorer ce fichier et le fichier xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?

qichunren
la source
Les fichiers .xcuserstate peuvent être ignorés, mais pas le fichier pbxproj.
Kendall Helmstetter Gelner
Non, voici votre réponse: stackoverflow.com/questions/49478/…
jeswang

Réponses:

128

Mise à jour à la lumière de Swift Package Manager: Si vous construisez un projet en tant que package Swift, 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 quels fichiers appartiennent à quelles cibles. C'est probablement le fichier le plus volumineux du bundle de projets. Vous ne devez pas ignorer ce fichier. Il y a quelques points pour cela:

  1. Vous ne voudrez peut-être pas travailler sur ce projet seul ou;
  2. Vous prévoyez de travailler sur un projet à partir de différentes machines;
  3. Vous voudrez partager votre base de code avec d'autres;
Eimantas
la source
6

C'est le seul fichier que vous souhaitez dans vos dépôts du bundle xcodeproj. Ce fichier contient toutes les informations sur les fichiers cibles et les paramètres de construction.

Joueur de Grady
la source
1
Cette réponse a peut-être été vraie une fois, mais elle est actuellement fausse. Il n'est pas vrai qu'il contienne "toutes les informations" (plusieurs choses, par exemple les exécutables personnalisés sont stockés dans un fichier différent, par exemple les espaces de travail sont stockés dans un fichier différent, etc.), ni que ce soit le "seul fichier" que vous voulez stocker. cf la question sur ce qu'il faut inclure dans .gitignore - stackoverflow.com/questions/49478/…
Adam
1
cela semble bien pensé ... suivez cela dans le futur.
Grady Player
4

Malheureusement, si vos paramètres de build incluent la signature de code, vous devez saisir à nouveau votre entité de signature de code après chaque "git pull" si un autre membre de l'équipe l'a modifiée. Il me semble que cette information devrait être dans les paramètres utilisateur, pas dans le fichier global pbxproj.

Julius Smith
la source
2
Vous pouvez configurer la signature de code de sorte que chacun d'entre vous sur le projet ait un profil de signature de code différent qui correspond au même paramètre (partagé) dans le projet, par exemple en utilisant un nom générique, puis chacun de vous le faisant correspondre séparément, ou en par exemple, tous étant dans la même équipe iTunes et partageant des profils.
Adam
3

Si vous excluez project.pbxproj, les builds Jenkins échoueront. C'est donc important si vous utilisez Jenkins.

Joseph Bolade Caxton-Idowu
la source
0

J'ai constaté que je devais également conserver le (s) fichier (s) xcworkspace. Sinon, le projet avec un sous-projet est tombé en panne.

Paul Cézanne
la source
0

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 (beaucoup de pbxprojs) et plus de 8 développeurs y travaillent.

https://github.com/yonaskolb/XcodeGen

J'espère que ça aide.

Cyril Cermak
la source
0

project.pbxproj est un fichier important dans le bundle de configuration Xcode. Il est responsable de la gestion des références à tous les fichiers liés et à leurs regroupements, aux frameworks liés et, plus important encore, aux paramètres de construction du projet. Pour cette raison, nous ne pouvons pas exclure project.pbxproj du contrôle de version.

Voici mon général .gitignorepour mon projet 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
la source