ควรละเว้นไฟล์ * .xccheckout ใน Xcode5 ภายใต้ VCS หรือไม่


157

Apple ได้เปิดตัวไฟล์ประเภทที่เกี่ยวข้องกับโครงการใหม่ใน Xcode 5: "xccheckout"

ไฟล์นี้อยู่ในไดเรกทอรี ".xcodeproj / project.xcworkspace / xcshareddata /" และดูเหมือนว่าเกี่ยวข้องกับระบบควบคุมเวอร์ชันของโครงการ

ไฟล์ตัวอย่างอยู่ที่นี่: http://pastebin.com/5EP63iRa

ฉันคิดว่าไฟล์ประเภทนี้ควรถูกละเว้นใน VCS แต่ฉันไม่แน่ใจ

ดังนั้นนี่คือคำถาม:

  1. ควรละเว้น "xccheckout" หรือไม่
  2. วัตถุประสงค์ของมันคืออะไร?

คำถามนี้มีความเกี่ยวข้องมาก ดังนั้นฉันต้องการให้ถูกต้องทางไวยากรณ์และวากยสัมพันธ์มากขึ้น หากคุณเป็นเจ้าของภาษาอังกฤษหรือคุณมีความเชี่ยวชาญในภาษาอังกฤษอย่างมากฉันต้องการขอความช่วยเหลือในการตรวจสอบภาษา ขอบคุณ!
Artem Abramov

1
การเปลี่ยนแปลงเล็กน้อยที่แนะนำ: "Apple ได้แนะนำตัวใหม่", "ไฟล์ตัวอย่างอยู่ที่นี่:" มีการอ้างอิงที่ไม่ตรงกันในคำถามที่ 1
Sofi Software LLC

3
ฉันมักจะอ้างถึง github / gitignore repo เพื่อให้ทราบว่าควรละเว้นไฟล์ใด -> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs

คำตอบ:


109

คุณควรตรวจสอบใน.xccheckoutไฟล์Xcode 5 โดยทั่วไปไฟล์ในxcshareddataควรถูกคอมมิท

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


8
หากไม่ได้ตั้งใจจะแชร์ให้ Apple จะเก็บไว้ใน.xcuserdataนั้นดังนั้นควรรวมไว้ด้วย
Joshcodes

4
อย่างที่ฉันพูดในคำตอบของฉันไฟล์ xccheckout มีข้อมูลสำหรับที่เก็บทั้งหมดที่ใช้ในเวิร์กสเปซ ในกรณีนี้ไม่ว่าระบบ SCM จะใช้งานแบบใดพื้นที่ทำงานนั้นอาจอยู่ในรูปแบบ svn หรือ git และโครงการสามารถอยู่ในรูปแบบของพื้นที่เก็บข้อมูล svn และ git
Chris Hanson

72
ดูเหมือนว่า xccheckout มีคีย์และชื่อที่เฉพาะกับเครื่องของนักพัฒนาแต่ละคน ... ทันทีที่ฉันรัน xcode มันจะเปลี่ยนคีย์บางไฟล์ในไฟล์และจะเปลี่ยนสิ่งที่เรียกว่า IDESourceControlWCCName จาก <string> OurCompanyAPI </string> เป็นสตริง > our_company_api / string> - หลังเป็นชื่อที่ฉันใช้เมื่อทำการคัดลอก repo หากควรจะแชร์ไฟล์นี้แสดงว่า Apple ทำงานได้ไม่ดีนัก
Herr Grumps

7
เมื่อเราตรวจสอบในไฟล์นี้เพื่อนร่วมงานของฉันทุกคนจะได้รับ IDESourceControlProjectIdentifier ที่แตกต่างกันเพื่อให้. xccheckout ของเราได้รับการแก้ไขด้วยการกระทำแต่ละอย่าง -_-
Cœur

9
ไม่ว่าสิ่งที่ Apple ตั้งใจไว้สำหรับ.xccheckoutไฟล์นั้นจะก่อให้เกิดปัญหาที่บ้าคลั่งใน Xcode 6 เบต้าและฉันตัดสินใจที่จะลบพวกเขาออกจาก VCS ดูเหมือนว่าจะเกี่ยวข้องกับข้อผิดพลาดในการแคชและฉันเชื่อว่า Xcode สามารถสร้างใหม่จาก VCS โดยอัตโนมัติในแต่ละครั้ง
eonil

63

*.xccheckoutไฟล์มีข้อมูลเมตา VCS และควรดังนั้นจึงไม่ได้รับการตรวจสอบใน VCS

ในทางกลับกัน: การตรวจสอบในไฟล์นี้อาจจะไม่สร้างปัญหาการรวมหรือปัญหาอื่น ๆ

หากคุณต้องการละเว้นไฟล์นี้ (ซึ่งฉันแนะนำ) คุณควรเพิ่มบรรทัดนี้ในโครงการของคุณ.gitignore:

*.xccheckout

Abizern 's วิธีการแก้ปัญหาจะไม่ทำงานสำหรับโครงการภายในพื้นที่ทำงาน เพราะเมื่อคุณใช้พื้นที่ทำงานเส้นทางไปที่ไฟล์จะเป็น:*.xccheckout <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekoutและมันก็ไม่สนใจอะไรมากกว่าที่คุณต้องการ

แก้ไข: ไฟล์นี้มีไว้สำหรับจัดการความรู้ของ Xcode เกี่ยวกับระบบ VCS จำนวนมากที่อาจเกิดขึ้นในโครงการของคุณดูคำตอบของChris Hanson สำหรับ> 99% ของโปรเจ็กต์ไฟล์. xccheckout คือคอนฟิกูเรชันมากเกินไป


1
มันจะยอดเยี่ยมถ้าคุณสามารถขยายคำสั่งนี้ "มันจริงละเว้นมากกว่าที่คุณต้องการ" โดยเฉพาะตัวอย่างของไฟล์อื่น ๆ ที่เข้าสู่โฟลเดอร์นั้นที่ควรเช็คอิน
ทำเครื่องหมาย Edington

การติดตามผล: ฉันใช้. gignignore จากAdamจากคำถามนี้ มันเป็นส่วนสำคัญและมีคำอธิบายเนื้อหาของโฟลเดอร์ xcshareddata
Mark Edington

@ มาร์ค : project.xcworkspace/มันไม่สนใจ นั่นอาจจะเป็นตอนนี้ แต่ฉันจะไม่นับว่าสำหรับรุ่น Xcode ใหม่
Berik

6
คำตอบนี้ไม่ถูกต้องและมาตรฐานของ GitHub .gitignoreที่นักพัฒนาซอฟต์แวร์ไม่ควรระบุ*.xccheckout
Chris Hanson

2
หลังจากรวมไฟล์นี้ใน repos ของฉันนับตั้งแต่มีการเปิดตัวฉันเพิ่งเริ่มลบไฟล์จาก repos ทั้งหมดของฉัน สิ่งนี้กำลังสร้างความขัดแย้งผสานตลอดเวลาส่วนใหญ่ในโครงการที่มีกรอบงานของฉันเองเป็น submodules แล้วฉันจะไม่ได้อะไรจากไฟล์นี้เนื่องจากฉันใช้ git สำหรับการจัดการ submodule เยี่ยมมากลอง Apple ขอบคุณ แต่ไม่ขอบคุณ
ปาสกาล

38

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

หากคุณใช้ VCS แบบกระจายเช่น Mercurial หรือ git แต่ใช้มันราวกับว่ามันเป็น CVCS (กล่าวอีกนัยหนึ่งทุกคนโคลนจากที่เก็บที่แชร์โดยตรงไปยังพื้นที่ทำงานส่วนตัวบนเครื่องของพวกเขา) จากนั้นคุณยังอาจต้องการตรวจสอบ ใน.

อย่างไรก็ตามหากคุณใช้ DVCS กับทุกคนที่มีการโคลนระยะไกลของตัวเองตัวอย่างเช่นการใช้ GitHub ในรูปแบบการใช้งานมาตรฐานคุณไม่ต้องการตรวจสอบไฟล์นี้หากคุณทำแล้วคำขอการดึงของคุณจะถามการตั้งค่าพื้นที่เก็บข้อมูลของคุณ เพื่อคัดลอกลงในไฟล์ xccheckout ของคนอื่น แต่การตั้งค่าที่เก็บของคุณจะแตกต่างจากของคนอื่นเพราะคุณทุกคนใช้ที่เก็บระยะไกลที่แตกต่างกัน


1
คำตอบนี้ดูเหมือนจะดีที่สุดสำหรับฉัน การตรวจสอบสิ่งเหล่านี้ก่อให้เกิดความไม่จำเป็นในส่วนต่างสำหรับทีมของเรา ฉันเพิ่ม. gignignore ต่อไปนี้เพื่อป้องกันไม่ให้: * / .xcworkspace / xcshareddata / *. xccheckout ฉันยังไม่เข้าใจว่าทำไม Apple เลือกที่จะจัดเก็บข้อมูลนี้ซ้ำที่อยู่ในโฟลเดอร์. git (เดาเพียงอย่างเดียวคือ ทำให้สิ่งต่าง ๆ ทำงานได้อย่างสม่ำเสมอใน VCS)
Juan Carlos Méndez

20

ใช่Project.xccheckoutไฟล์ควรถูกส่งไปยังที่เก็บข้อมูลของคุณ Xcode ใช้ไฟล์นี้เพื่อบอกคนอื่น ๆ ที่เปิดเวิร์กสเปซรายการทั้งหมดของที่เก็บคอนโทรลแหล่งที่ใช้โดยเวิร์กสเปซและตำแหน่งของสำเนาการทำงานที่สัมพันธ์กับเวิร์กสเปซไม่ว่าจะเป็นที่เก็บ Git, SVN หรือทั้งสองอย่าง

เมื่อคุณเปิดเวิร์กสเปซ Xcode จะใช้Project.xccheckoutไฟล์เพื่อแจ้งให้ผู้ใช้ทราบว่ามีที่เก็บอื่น ๆ ซึ่งเป็นส่วนหนึ่งของเวิร์กสเปซและถามว่าควรจะเช็คเอาต์ใด เมื่อตรวจสอบที่เก็บข้อมูลเพิ่มเติม Xcode จะวางสำเนาการทำงานในโครงสร้างโฟลเดอร์ที่สัมพันธ์กับพื้นที่ทำงานเหมือนกับเมื่อสร้างProject.xccheckoutไฟล์

ดังที่Chris Hansonกล่าวว่าอาจไม่สำคัญสำหรับพื้นที่เก็บข้อมูลเดียวพื้นที่ทำงานโครงการหนึ่ง แต่สำหรับกิจการที่ซับซ้อนมากขึ้นมันจะมีประโยชน์มากแน่นอน

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในวิดีโอเซสชัน WWDC 2013 ทำความเข้าใจเกี่ยวกับการควบคุมแหล่งข้อมูลใน Xcode ; ส่วนที่เกี่ยวข้องเริ่มต้นที่ประมาณ 15 นาที


ไฟล์นี้มีประโยชน์ก็ต่อเมื่อคุณใช้ Xcode สำหรับ SCM มิฉะนั้นคุณไม่จำเป็นต้องใช้ไฟล์นั้นเลย และแม้แต่น้อยถ้าคุณทำงานกับส้อมคอมไพล์ในกรณีนั้นเส้นทาง repo จะไม่ซ้ำกันต่อนักพัฒนา
Carlos Ricardo

3

นี่คือสิ่งที่ฉันมีใน. gitignore ของฉันสำหรับ Xcode

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

มันเก็บทุกอย่างที่เกี่ยวข้องกับสภาพท้องถิ่นของโครงการที่มองหาฉันออกจากที่เก็บ

ไฟล์ xccheckout อยู่ที่นี่ดังนั้นจึงไม่มีการติดตามในระบบของฉันตามค่าเริ่มต้น

Xcode ได้ดีขึ้นและแยกสิ่งที่ต้องแบ่งปันและสิ่งที่ต้องเก็บไว้ในเครื่อง ตัวอย่างเช่น; บรรทัดเหล่านี้จะไม่สนใจโครงร่างบิลด์เริ่มต้นซึ่งใช้ได้เนื่องจากคุณสามารถทำเครื่องหมายโครงร่างบิวด์เฉพาะเป็นแบบแบ่งใช้และวางไว้ในไดเร็กทอรีที่ไม่ถูกละเว้น

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

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