Sollte ich die Datei xcodeproject / project.pbxproj ignorieren?


101

In einem XCode-Projekt habe ich die Datei xcodeproject / project.pbxproj geändert, aber nutzlose Informationen für mich, sie zum Kompilieren.

Sollte ich diese Datei und die Datei xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate ignorieren?


.xcuserstate-Dateien können ignoriert werden, nur nicht die pbxproj-Datei.
Kendall Helmstetter Gelner

Nein, hier ist Ihre Antwort: stackoverflow.com/questions/49478/…
jeswang

Antworten:


128

Update im Lichte von Swift Package Manager: Wenn Sie ein Projekt als Swift-Paket erstellen, sollten Sie diese Datei auf jeden Fall ignorieren, da sie mit dem Dateisystem als Quelle der Wahrheit generiert werden kann. Sie können dies mit dem folgenden Befehl tun:

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

Für Nicht-SwiftPM-Antworten siehe unten.

Diese Datei enthält die Liste aller Dateien im Projekt, die Einstellungen der Ziele und welche Dateien zu welchen Zielen gehören. Es ist wahrscheinlich die fleischigste Datei im Projektpaket. Sie sollten diese Datei nicht ignorieren. Dafür gibt es nur wenige Punkte:

  1. Möglicherweise möchten Sie nicht alleine an diesem Projekt arbeiten oder;
  2. Sie planen, von verschiedenen Maschinen aus an Projekten zu arbeiten.
  3. Sie möchten Ihre Codebasis mit anderen teilen.

6

Dies ist die einzige Datei, die Sie in Ihren Repos aus dem xcodeproj-Bundle haben möchten. Diese Datei enthält alle Informationen für Zieldateien und Build-Einstellungen.


1
Diese Antwort mag einmal wahr gewesen sein, ist aber derzeit falsch. Es ist weder wahr, dass es "alle Informationen" enthält (verschiedene Dinge, z. B. benutzerdefinierte ausführbare Dateien werden in einer anderen Datei gespeichert, z. B. Arbeitsbereiche werden in einer anderen Datei gespeichert usw.), noch ist es wahr, dass es die "einzige Datei" ist, die Sie verwenden speichern wollen. Siehe die Frage, was in .gitignore - stackoverflow.com/questions/49478/…
Adam

1
das scheint gut durchdacht ... folge dem in der Zukunft.
Grady Player

4

Wenn Ihre Build-Einstellungen die Codesignatur enthalten, müssen Sie Ihre Codesignaturentität nach jedem "Git Pull" erneut eingeben, wenn ein anderes Teammitglied sie geändert hat. Es scheint mir, dass diese Informationen in den Benutzereinstellungen sein sollten, nicht in der globalen pbxproj-Datei.


2
Sie können die Codesignatur so einrichten, dass jeder von Ihnen im Projekt ein anderes Codesignaturprofil hat, das mit derselben (gemeinsam genutzten) Einstellung im Projekt übereinstimmt, z. B. indem Sie einen Platzhalternamen verwenden und dann jeder von Ihnen separat oder nach zB alle im selben iTunes-Team und teilen Profile.
Adam


0

Ich habe festgestellt, dass ich auch die xcworkspace-Datei (en) beibehalten muss. Wenn nicht, ist das Projekt mit einem Teilprojekt kaputt gegangen.


0

Sie können Xcodegen verwenden, um ein pbxproj aus einer YAML-Projektspezifikationsdatei zu generieren. Anschließend können Sie pbxproj in git ignorieren und jedes Mal generieren, wenn Sie es benötigen.

Ich habe Xcodegen bereits für ein zweites Projekt verwendet, das eine modulare Architektur hat (viele pbxprojs), und mehr als 8 Entwickler arbeiten daran.

https://github.com/yonaskolb/XcodeGen

Ich hoffe es hilft.


0

project.pbxproj ist eine wichtige Datei im Xcode-Konfigurationspaket. Es ist dafür verantwortlich, Verweise auf alle verknüpften Dateien und deren Gruppierungen, verknüpfte Frameworks und vor allem die Build-Einstellungen des Projekts beizubehalten. Aus diesem Grund können wir project.pbxproj nicht von der Versionskontrolle ausschließen.

Hier ist mein General .gitignorefür mein Xcode-Projekt.

# 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.