ในโปรเจ็กต์ XCode ฉันได้เปลี่ยนไฟล์ xcodeproject / project.pbxproj แต่ข้อมูลที่ไร้ประโยชน์สำหรับฉันมันสำหรับการคอมไพล์
ฉันควรละเว้นไฟล์นี้และไฟล์ xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate หรือไม่
ในโปรเจ็กต์ XCode ฉันได้เปลี่ยนไฟล์ xcodeproject / project.pbxproj แต่ข้อมูลที่ไร้ประโยชน์สำหรับฉันมันสำหรับการคอมไพล์
ฉันควรละเว้นไฟล์นี้และไฟล์ xcodeproject / projectxworkspace / username.xcuserdata / UserInterfaceState.xcuserstate หรือไม่
คำตอบ:
อัปเดตในแง่ของ Swift Package Manager:หากคุณกำลังสร้างโปรเจ็กต์เป็นแพ็คเกจ Swift คุณควรละเว้นไฟล์นี้อย่างแน่นอนเนื่องจากสามารถสร้างได้โดยใช้ระบบไฟล์เป็นแหล่งที่มาของความจริง คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:
$ cd ~/Projects/MyProjectFolder/
$ swift package generate-xcodeproj
สำหรับคำตอบที่ไม่ใช่ SwiftPM - ดูด้านล่าง
ไฟล์นี้เก็บรายชื่อไฟล์ทั้งหมดในโปรเจ็กต์การตั้งค่าเป้าหมายและไฟล์ที่เป็นของเป้าหมาย อาจเป็นไฟล์ที่มีเนื้อสัตว์ที่สุดในชุดโครงการ คุณไม่ควรละเลยไฟล์นี้ มีบางจุดสำหรับสิ่งนี้:
นั่นคือไฟล์เดียวที่คุณต้องการใน repos ของคุณจากชุด xcodeproj ไฟล์นั้นเก็บข้อมูลทั้งหมดสำหรับไฟล์เป้าหมายและสร้างการตั้งค่า
ขออภัยหากการตั้งค่าการสร้างของคุณมีการลงนามรหัสคุณจะต้องป้อนเอนทิตีการลงนามรหัสของคุณอีกครั้งหลังจาก "คอมไพล์ดึง" ทุกครั้งหากสมาชิกในทีมคนอื่นเปลี่ยนแปลง สำหรับฉันแล้วข้อมูลนี้ควรอยู่ในการตั้งค่าผู้ใช้ไม่ใช่ไฟล์ global pbxproj
หากคุณยกเว้นการสร้าง project.pbxproj Jenkins จะล้มเหลว ดังนั้นนี่เป็นสิ่งสำคัญหากคุณใช้ Jenkins
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
ฉันพบว่าฉันต้องสงวนไฟล์ xcworkspace ไว้ด้วย หากไม่เป็นเช่นนั้นโปรเจ็กต์ที่มีโปรเจ็กต์ย่อยจะพัง
คุณสามารถใช้ Xcodegen เพื่อสร้าง pbxproj จากไฟล์ข้อกำหนดโครงการ YAML จากนั้นคุณสามารถละเว้น pbxproj ในคอมไพล์และสร้างได้ทุกครั้งที่คุณต้องการ
ฉันใช้ Xcodegen ในโปรเจ็กต์ที่สองซึ่งมีสถาปัตยกรรมโมดูลาร์ (pbxprojs จำนวนมาก) และนักพัฒนาอีก 8 คนกำลังดำเนินการอยู่
https://github.com/yonaskolb/XcodeGen
หวังว่าจะช่วยได้