Haruskah saya mengabaikan file xcodeproject / project.pbxproj?

101

dalam proyek XCode, saya sering mendapat file xcodeproject / project.pbxproj berubah, tetapi info yang tidak berguna bagi saya, itu untuk dikompilasi.

Haruskah saya mengabaikan file ini dan file xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate?

qichunren.dll
sumber
File .xcuserstate dapat diabaikan, hanya saja file pbxproj tidak.
Kendall Helmstetter Gelner
Tidak, ini jawaban Anda: stackoverflow.com/questions/49478/…
jeswang

Jawaban:

128

Pembaruan terkait Manajer Paket Swift: Jika Anda membangun proyek sebagai paket Swift - Anda harus mengabaikan file ini karena dapat dibuat menggunakan sistem file sebagai sumber kebenaran. Anda dapat melakukannya dengan menggunakan perintah berikut:

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

Untuk jawaban non-SwiftPM - lihat di bawah.

File ini menyimpan daftar semua file dalam proyek, setelan target, dan file mana yang termasuk dalam target mana. Ini mungkin file paling kecil dalam bundel proyek. Anda tidak boleh mengabaikan file ini. Ada beberapa poin untuk ini:

  1. Anda mungkin tidak ingin mengerjakan proyek ini sendirian atau;
  2. Anda berencana mengerjakan proyek dari mesin yang berbeda;
  3. Anda ingin berbagi basis kode Anda dengan orang lain;
Eimantas
sumber
6

Itu adalah satu-satunya file yang Anda inginkan di repo Anda dari bundel xcodeproj. File itu menyimpan semua info untuk file target dan pengaturan build.

Pemain Grady
sumber
1
Jawaban ini mungkin pernah benar, tetapi saat ini salah. Tidak benar bahwa ini menyimpan "semua info" (beberapa hal misalnya file yang dapat dieksekusi khusus disimpan dalam file yang berbeda, misalnya ruang kerja disimpan dalam file yang berbeda, dll), juga tidak benar bahwa itu adalah "satu-satunya file" yang Anda ingin menyimpan. cf pertanyaan tentang apa yang harus disertakan dalam .gitignore - stackoverflow.com/questions/49478/…
Adam
1
yang sepertinya sudah dipikirkan dengan baik ... ikuti itu di masa depan.
Grady Player
4

Sayangnya, jika Pengaturan Build Anda menyertakan penandatanganan kode, Anda harus memasukkan kembali entitas penandatanganan kode Anda setelah setiap "git pull" jika anggota tim lain telah mengubahnya. Menurut saya info ini harus ada di pengaturan pengguna, bukan file pbxproj global.

Julius Smith
sumber
2
Anda dapat mengatur penandatanganan kode sehingga Anda masing-masing di proyek memiliki profil penandatanganan kode berbeda yang cocok dengan pengaturan yang sama (bersama) dalam proyek, misalnya dengan menggunakan nama karakter pengganti dan masing-masing Anda mencocokkannya secara terpisah, atau dengan misalnya semua berada di tim iTunes yang sama dan berbagi profil.
Adam
3

Jika Anda mengecualikan project.pbxproj, build Jenkins akan gagal. Jadi ini penting jika Anda menggunakan Jenkins.

Joseph Bolade Caxton-Idowu
sumber
0

Saya menemukan bahwa saya juga perlu mempertahankan file xcworkspace. Jika tidak, proyek dengan subproyek rusak.

Paul Cezanne
sumber
0

Anda dapat menggunakan Xcodegen untuk menghasilkan pbxproj dari file spesifikasi proyek YAML, lalu Anda dapat mengabaikan pbxproj di git dan membuatnya setiap kali Anda butuhkan.

Saya telah menggunakan Xcodegen pada proyek kedua yang memiliki arsitektur modular (banyak pbxprojs) dan lebih dari 8 pengembang sedang mengerjakannya.

https://github.com/yonaskolb/XcodeGen

Semoga membantu.

Cyril Cermak
sumber
0

project.pbxproj adalah file penting dalam bundel konfigurasi Xcode. Ini bertanggung jawab untuk memelihara referensi ke semua file yang ditautkan dan pengelompokannya, kerangka kerja tertaut, dan yang terpenting, pengaturan build proyek. Karena itu, kami tidak dapat mengecualikan project.pbxproj dari kontrol versi.

Ini adalah jenderal .gitignoresaya untuk Proyek Xcode saya.

# 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
sumber