ฉันควรละเว้นไฟล์ xcodeproject / project.pbxproj หรือไม่


102

ในโปรเจ็กต์ XCode ฉันได้เปลี่ยนไฟล์ xcodeproject / project.pbxproj แต่ข้อมูลที่ไร้ประโยชน์สำหรับฉันมันสำหรับการคอมไพล์

ฉันควรละเว้นไฟล์นี้และไฟล์ xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate หรือไม่


ไฟล์. xcuserstate สามารถละเว้นได้ไม่ใช่แค่ไฟล์ pbxproj
Kendall Helmstetter Gelner

ไม่นี่คือคำตอบของคุณ stackoverflow.com/questions/49478/…
jeswang

คำตอบ:


132

อัปเดตในแง่ของ Swift Package Manager:หากคุณกำลังสร้างโปรเจ็กต์เป็นแพ็คเกจ Swift คุณควรละเว้นไฟล์นี้อย่างแน่นอนเนื่องจากสามารถสร้างได้โดยใช้ระบบไฟล์เป็นแหล่งที่มาของความจริง คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:

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

สำหรับคำตอบที่ไม่ใช่ SwiftPM - ดูด้านล่าง

ไฟล์นี้เก็บรายชื่อไฟล์ทั้งหมดในโปรเจ็กต์การตั้งค่าเป้าหมายและไฟล์ที่เป็นของเป้าหมาย อาจเป็นไฟล์ที่มีเนื้อสัตว์ที่สุดในชุดโครงการ คุณไม่ควรละเลยไฟล์นี้ มีบางจุดสำหรับสิ่งนี้:

  1. คุณอาจไม่ต้องการทำงานในโครงการนี้เพียงอย่างเดียวหรือ;
  2. คุณกำลังวางแผนที่จะทำงานในโครงการจากเครื่องจักรต่างๆ
  3. คุณจะต้องการแบ่งปันฐานรหัสของคุณกับผู้อื่น

6

นั่นคือไฟล์เดียวที่คุณต้องการใน repos ของคุณจากชุด xcodeproj ไฟล์นั้นเก็บข้อมูลทั้งหมดสำหรับไฟล์เป้าหมายและสร้างการตั้งค่า


1
คำตอบนี้อาจเคยเป็นจริง แต่ปัจจุบันผิด ไม่เป็นความจริงที่จะเก็บ "ข้อมูลทั้งหมด" ไว้ (หลายสิ่งเช่นไฟล์ปฏิบัติการที่กำหนดเองจะถูกเก็บไว้ในไฟล์อื่นเช่นพื้นที่ทำงานจะถูกเก็บไว้ในไฟล์อื่นเป็นต้น) และเป็น "ไฟล์เดียว" ที่คุณ ต้องการจัดเก็บ. เปรียบเทียบคำถามเกี่ยวกับสิ่งที่จะรวมไว้ใน. gitignore - stackoverflow.com/questions/49478/…
อดัม

1
ที่ดูเหมือนคิดมาดีแล้ว ... ตามนั้นในอนาคต
Grady Player

5

ขออภัยหากการตั้งค่าการสร้างของคุณมีการลงนามรหัสคุณจะต้องป้อนเอนทิตีการลงนามรหัสของคุณอีกครั้งหลังจาก "คอมไพล์ดึง" ทุกครั้งหากสมาชิกในทีมคนอื่นเปลี่ยนแปลง สำหรับฉันแล้วข้อมูลนี้ควรอยู่ในการตั้งค่าผู้ใช้ไม่ใช่ไฟล์ global pbxproj


2
คุณสามารถตั้งค่าการเซ็นชื่อรหัสเพื่อให้คุณแต่ละคนในโปรเจ็กต์มีโปรไฟล์การเซ็นชื่อรหัสที่แตกต่างกันซึ่งตรงกับการตั้งค่า (ใช้ร่วมกัน) เดียวกันในโปรเจ็กต์เช่นโดยใช้ชื่อตัวแทนจากนั้นคุณแต่ละคนจับคู่แยกกันหรือโดย เช่นทุกคนอยู่ในทีม iTunes เดียวกันและแชร์โปรไฟล์
Adam


1

project.pbxproj เป็นไฟล์สำคัญในบันเดิลการกำหนดค่า Xcode มีหน้าที่รับผิดชอบในการรักษาการอ้างอิงไปยังไฟล์ที่เชื่อมโยงทั้งหมดและการจัดกลุ่มเฟรมเวิร์กที่เชื่อมโยงและที่สำคัญที่สุดคือการตั้งค่าการสร้างของโครงการ ด้วยเหตุนี้เราจึงไม่สามารถแยก project.pbxproj ออกจากการควบคุมเวอร์ชันได้

นี่คือทั่วไป.gitignoreของฉันสำหรับโครงการ 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

0

ฉันพบว่าฉันต้องสงวนไฟล์ xcworkspace ไว้ด้วย หากไม่เป็นเช่นนั้นโปรเจ็กต์ที่มีโปรเจ็กต์ย่อยจะพัง


0

คุณสามารถใช้ Xcodegen เพื่อสร้าง pbxproj จากไฟล์ข้อกำหนดโครงการ YAML จากนั้นคุณสามารถละเว้น pbxproj ในคอมไพล์และสร้างได้ทุกครั้งที่คุณต้องการ

ฉันใช้ Xcodegen ในโปรเจ็กต์ที่สองซึ่งมีสถาปัตยกรรมโมดูลาร์ (pbxprojs จำนวนมาก) และนักพัฒนาอีก 8 คนกำลังดำเนินการอยู่

https://github.com/yonaskolb/XcodeGen

หวังว่าจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.