Devo ignorare il file xcodeproject / project.pbxproj con git?


101

in un progetto XCode, offen ho modificato il file xcodeproject / project.pbxproj, ma informazioni inutili per me, per la compilazione.

Devo ignorare questo file e il file xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?


I file .xcuserstate possono essere ignorati, ma non il file pbxproj.
Kendall Helmstetter Gelner

No, qui è la vostra risposta: stackoverflow.com/questions/49478/...
jeswang

Risposte:


128

Aggiornamento alla luce di Swift Package Manager: se stai costruendo un progetto come pacchetto Swift, dovresti assolutamente ignorare questo file poiché può essere generato utilizzando il file system come fonte di verità. Puoi farlo usando il seguente comando:

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

Per risposte non SwiftPM, vedi sotto.

Questo file contiene l'elenco di tutti i file nel progetto, le impostazioni dei target e quali file appartengono a quali target. Probabilmente è il file più carnoso nel pacchetto del progetto. Non dovresti ignorare questo file. Ci sono pochi punti per questo:

  1. Potresti non voler lavorare su questo progetto da solo o;
  2. Stai pensando di lavorare sul progetto da macchine diverse;
  3. Ti consigliamo di condividere la tua base di codice con altri;

6

Questo è l'unico file che vuoi nei tuoi repository dal bundle xcodeproj. Quel file contiene tutte le informazioni per i file di destinazione e le impostazioni di compilazione.


1
Questa risposta potrebbe essere stata vera una volta, ma attualmente è sbagliata. Non è né vero che contiene "tutte le informazioni" (molte cose ad es. Eseguibili personalizzati sono archiviati in un file diverso, ad es. Gli spazi di lavoro sono archiviati in un file diverso, ecc.), Né è vero che è l '"unico file" che tu desidera memorizzare. vedi la domanda su cosa includere in .gitignore - stackoverflow.com/questions/49478/…
Adam

1
sembra ben congegnato ... seguilo in futuro.
Grady Player

4

Sfortunatamente, se le tue impostazioni di build includono la firma del codice, devi reinserire la tua entità di firma del codice dopo ogni "git pull" se un altro membro del team l'ha modificata. Mi sembra che queste informazioni dovrebbero essere nelle impostazioni dell'utente, non nel file pbxproj globale.


2
È possibile impostare la firma del codice in modo che ognuno di voi nel progetto abbia un profilo di firma del codice diverso che corrisponda alla stessa impostazione (condivisa) nel progetto, ad esempio utilizzando un nome jolly e quindi ciascuno di voi abbinandolo separatamente o tramite es. tutti che fanno parte dello stesso team di iTunes e condividono i profili.
Adam


0

Ho scoperto che ho anche bisogno di preservare i file xcworkspace. In caso contrario, il progetto con un sottoprogetto è fallito.


0

Puoi usare Xcodegen per generare un pbxproj da un file di specifica del progetto YAML, quindi puoi ignorare pbxproj in git e generarli ogni volta che ne hai bisogno.

Ho già utilizzato Xcodegen su un secondo progetto che ha un'architettura modulare (molti pbxproj) e più di 8 sviluppatori ci stanno lavorando.

https://github.com/yonaskolb/XcodeGen

Spero che sia d'aiuto.


0

project.pbxproj è un file importante nel bundle di configurazione di Xcode. È responsabile della conservazione dei riferimenti a tutti i file collegati e ai loro raggruppamenti, ai framework collegati e, soprattutto, alle impostazioni di compilazione del progetto. Per questo motivo, non possiamo escludere project.pbxproj dal controllo della versione.

Ecco il mio generale .gitignoreper il mio progetto 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.