VCS के तहत Xcode5 में * .xccheckout फ़ाइलों को अनदेखा किया जाना चाहिए?


157

Apple ने Xcode 5: "xccheckout" में एक नई परियोजना-संबंधित प्रकार की फ़ाइल पेश की है।

यह फ़ाइल ".xcodeproj / project.xcworkspace / xcsedendata /" निर्देशिका में स्थित है, और ऐसा लगता है कि यह परियोजना के संस्करण नियंत्रण प्रणाली से संबंधित है।

एक उदाहरण फ़ाइल यहाँ है: http://pastebin.com/5EP63iRa

मुझे लगता है कि इस प्रकार की फ़ाइल को वीसीएस के तहत अनदेखा किया जाना चाहिए, लेकिन मुझे यकीन नहीं है।

तो यहाँ प्रश्न हैं:

  1. क्या "xccheckout" को अनदेखा किया जाना चाहिए?
  2. इसका उद्देश्य क्या है?

यह प्रश्न काफी प्रासंगिक है; इस प्रकार मैं चाहूंगा कि यह अधिक व्याकरणिक और वाक्यविन्यास रूप से सही हो। यदि आप मूल अंग्रेजी वक्ता हैं या आप अंग्रेजी में बेहद कुशल हैं तो मैं अपनी भाषा की जाँच में मदद माँगना चाहता हूँ। धन्यवाद!
आर्टेम अब्रामोव

1
माइनर ने परिवर्तनों का सुझाव दिया: "Apple ने एक नया परिचय दिया है", "एक उदाहरण फ़ाइल यहाँ है:"। प्रश्न 1 में एक बेमेल बोली है।
सोफी सॉफ्टवेयर एलएलसी

3
मैं हमेशा के लिए उल्लेख GitHub / gitignore रेपो पता करने के लिए कौन-सी फ़ाइलें अनदेखा किया जाना चाहिए -> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs

जवाबों:


109

आपको Xcode 5 फ़ाइल में जांच करनी चाहिए.xccheckout ; सामान्य रूप से, फ़ाइलों को xcshareddataप्रतिबद्ध होना चाहिए।

एक .xccheckoutफ़ाइल क्या खजाने एक कार्यक्षेत्र में उपयोग किया जाता के बारे में मेटाडेटा शामिल हैं। किसी एकल रिपॉजिटरी में किसी एकल प्रोजेक्ट के लिए, जो बहुत अंतर नहीं करता है। लेकिन अगर आप एक ऐसे कार्यक्षेत्र का उपयोग कर रहे हैं जिसमें विभिन्न रिपॉजिटरी से कई परियोजनाएं हैं, तो .xccheckoutकार्यक्षेत्र में एक फ़ाइल की उपस्थिति Xcode को यह जानने की अनुमति देती है कि कार्यक्षेत्र बनाने वाले सभी घटक क्या हैं और उन्हें कहां प्राप्त करना है।


8
यदि यह साझा करने के लिए नहीं था, .xcuserdataतो Apple इसे संग्रहीत करेगा, इसलिए इसे शामिल किया जाना चाहिए।
जोशकोड्स

4
जैसा कि मैंने अपने जवाब में कहा है, xccheckout फ़ाइल में कार्यक्षेत्र में उपयोग की जाने वाली सभी रिपॉजिटरी की जानकारी है। इस बात की परवाह किए बिना कि वे किस SCM प्रणाली का उपयोग करते हैं - ऐसा कार्यक्षेत्र svn या git में हो सकता है, और इसके प्रोजेक्ट svn और git रिपॉजिटरी के मिश्रण में हो सकते हैं।
क्रिस हैनसन

72
ऐसा लगता है कि xccheckout में कुंजियाँ और नाम हैं जो प्रत्येक डेवलपर की मशीन के लिए विशिष्ट हैं ... जैसे ही मैं xcode चलाता हूं यह फ़ाइल में कुछ कुंजियों को बदल देता है, और यह <string> OurCompAPI </ string> से <string> IDESourceControlWCCName नामक कुछ परिवर्तन करता है। > our_company_api / string> - बाद वाला नाम जिसका इस्तेमाल मैंने रेपो क्लोनिंग करते समय किया था। यदि यह फ़ाइल साझा की जानी है, तो Apple ने बहुत खराब काम किया है।
हेर ग्रंप

7
जब हम इस फ़ाइल में जाँच करते हैं, तो मेरे सभी सहकर्मियों को एक अलग IDESourceControlProjectIdentifier मिलता है ... इसलिए हमारा .xccheckout प्रत्येक कमिट के साथ संशोधित हो जाता है। -_-
C_ur

9
भले ही Apple मूल रूप से क्या चाहता था, .xccheckoutफाइलें Xcode 6 बीटा पर कुछ पागल मुद्दों का कारण बन रही हैं, और मैंने उन्हें VCS से हटाने का फैसला किया। कुछ कैशिंग बग से संबंधित होने का अनुमान है, और मेरा मानना ​​है कि Xcode हर बार के लिए स्वचालित रूप से वीसीएस से उन्हें पुन: उत्पन्न कर सकता है।
eonil

63

*.xccheckoutफ़ाइल VCS मेटाडाटा होता है, और इसलिए नहीं VCS में जाँच की जानी चाहिए।

दूसरी ओर: इस फ़ाइल में जाँच करने से शायद मर्ज की समस्या या अन्य समस्याएँ पैदा नहीं होंगी।

यदि आप इस फ़ाइल को अनदेखा करना चाहते हैं (जो मैं सुझाता हूं) तो आपको इस लाइन को अपनी परियोजना में जोड़ना चाहिए .gitignore:

*.xccheckout

कार्यक्षेत्र के अंदर परियोजनाओं के लिए एब्ज़र्न का समाधान काम नहीं करेगा। क्योंकि, जब आप एक कार्यक्षेत्र का उपयोग करते हैं, तो *.xccheckoutफ़ाइल का पथ होगा <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout:। और यह वास्तव में आप चाहते हैं की तुलना में अधिक की अनदेखी करता है।

संपादित करें: यह फ़ाइल आपके प्रोजेक्ट में संभवतः कई VCS प्रणालियों के Xcode के ज्ञान के प्रबंधन के लिए मौजूद है, क्रिस हैनसन जवाब देखें। परियोजनाओं के> 99% के लिए .xccheckout फ़ाइल कॉन्फ़िगरेशन ओवरकिल है।


1
यह बहुत अच्छा होगा यदि आप इस कथन पर विस्तार कर सकते हैं "यह वास्तव में आपको जितना चाहिए उससे अधिक अनदेखा करता है"। विशेष रूप से, अन्य फ़ाइलों के कुछ उदाहरण जो उस फ़ोल्डर में जाते हैं
जिनकी

अनुवर्ती: मैं इस प्रश्न से एडम से एक .gitignore का उपयोग कर रहा हूँ । यह एक के रूप में उपलब्ध है सार और यह xcshareddata फ़ोल्डर की सामग्री में से कुछ विवरण नहीं है।
मार्क एडिंगटन

@ मार्क : यह अनदेखा करता है project.xcworkspace/। यह अब के लिए मजाक हो सकता है, लेकिन मैं नए Xcode संस्करणों के लिए उस पर भरोसा नहीं करूंगा।
बेरीक

6
यह उत्तर गलत है, और GitHub का मानक .gitignoreजो इसे डेवलपर्स को प्रदान करता है, उसे निर्दिष्ट नहीं करना चाहिए*.xccheckout
क्रिस हैनसन

2
मेरे रेपो में इस फाइल को शामिल करने के बाद से जब से इसे पेश किया गया है, मैंने हाल ही में इसे अपने सभी रिपॉजिट से हटाना शुरू कर दिया है। यह बात हर समय मर्ज टकराव पैदा कर रही है , ज्यादातर परियोजनाओं में जो सबमॉड्यूल्स के रूप में मेरे स्वयं के फ्रेमवर्क शामिल हैं। और तब मैं इस फ़ाइल से कुछ भी हासिल नहीं करता क्योंकि मैं सबमॉड्यूल प्रबंधन के लिए गिट का उपयोग करता हूं। अच्छी कोशिश, Apple, धन्यवाद, लेकिन कोई धन्यवाद नहीं।
पास्कल

38

निर्भर करता है। फ़ाइल में आपके द्वारा उपयोग किए जा रहे दूरस्थ रिपॉजिटरी के संदर्भ हैं। यदि आप एक केंद्रीकृत VCS का उपयोग कर रहे हैं जैसे कि Perforce या तोड़फोड़, तो सभी का रिमोट रिपॉजिटरी एक ही होगा और इसलिए आपको फ़ाइल की जांच करनी चाहिए।

यदि आप एक वितरित वीसीएस जैसे मर्क्यूरियल या गिट का उपयोग कर रहे हैं, लेकिन इसका उपयोग करते हुए जैसे कि यह एक सीवीसीएस (दूसरे शब्दों में, हर कोई एक साझा भंडार से सीधे अपने मशीन पर अपने व्यक्तिगत कार्यक्षेत्र में क्लोन करता है) तो आप अभी भी इसे जांचना चाहते हैं। में।

हालाँकि, यदि आप एक DVCS का उपयोग सभी के साथ कर रहे हैं, जिनके पास अपना रिमोट क्लोन है, उदाहरण के लिए GitHub का उपयोग करते हुए यह मानक उपयोग पैटर्न है, तो आप इस फ़ाइल की जाँच नहीं करना चाहते हैं। यदि आपने किया है तो आपके Pull अनुरोध आपके रिपॉजिटरी सेटिंग्स के लिए पूछेंगे। हर किसी की xccheckout फ़ाइल में कॉपी होने के लिए, लेकिन आपकी रिपॉजिटरी सेटिंग्स बाकी सभी से अलग होंगी क्योंकि आप सभी अलग-अलग रिमोट रिपॉजिटरी का उपयोग कर रहे हैं।


1
यह उत्तर मुझे सबसे अच्छा लगता है। हमारी टीम के काम करने के तरीके के बारे में उन पर जाँच करना अनावश्यक चुहलबाजी का कारण बन रहा था। मैं उन्हें बाहर रखने के लिए .gitignore को जोड़ देता हूं: * / /। चीजों को वीसीएस के पार लगातार काम करें)
जुआन कार्लोस मेन्डेज़

20

हां, Project.xccheckoutफाइल आपके भंडार के लिए प्रतिबद्ध होनी चाहिए। Xcode इस फ़ाइल का उपयोग उन लोगों को बताने के लिए करता है, जो कार्यक्षेत्र द्वारा उपयोग किए जाने वाले स्रोत नियंत्रण रिपॉजिटरी की पूरी सूची को खोलते हैं और कार्यक्षेत्र के सापेक्ष वर्किंग कॉपी के स्थान , चाहे वे रिपॉजिटरी Git, SVN, या दोनों हों।

जब आप कार्यक्षेत्र खोलते हैं, तो Xcode Project.xccheckoutफ़ाइल का उपयोग उपयोगकर्ता को सूचित करने के लिए करता है कि कार्यक्षेत्र का हिस्सा बनाने वाले अन्य रिपॉजिटरी हैं, और पूछता है कि किसकी जांच होनी चाहिए। अतिरिक्त रिपॉजिटरी की जाँच करते समय, Xcode काम की प्रतियों को उसी कार्यक्षेत्र-सापेक्ष फ़ोल्डर संरचना में रखता है, जब वे Project.xccheckoutफ़ाइल जनरेट किए गए थे ।

जैसा कि क्रिस हैनसन ने कहा, यह संभवतः एकल-रिपॉजिटरी, वन-प्रोजेक्ट कार्यक्षेत्र के लिए मायने नहीं रखता है, लेकिन अधिक जटिल मामलों के लिए यह वास्तव में बहुत आसान होगा।

आप इसके बारे में और अधिक जानकारी प्राप्त कर सकते हैं WWDC 2013 सत्र वीडियो एक्सकोड में अंडरस्टैंडिंग सोर्स कंट्रोल ; संबंधित भाग लगभग 15 मिनट से शुरू होता है।


यह फ़ाइल केवल तभी उपयोगी है जब आप SCM के लिए Xcode का उपयोग करते हैं, अन्यथा, आपको उस फ़ाइल की बिल्कुल भी आवश्यकता नहीं है। और इससे भी कम यदि आप गिट कांटे के साथ काम करते हैं, तो उस स्थिति में, रेपो पथ प्रति डेवलपर के लिए अद्वितीय होगा
कार्लोस रिकार्डो

3

यह वही है जो मेरे पास है। Xcode के लिए मेरे .gitignore में।

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

यह कुछ भी रखता है जो स्थानीय स्थिति से संबंधित है जिस तरह से परियोजनाएं मेरे लिए भंडार से बाहर दिखती हैं।

Xccheckout फ़ाइल यहाँ है, इसलिए इसे डिफ़ॉल्ट रूप से मेरे सिस्टम पर ट्रैक नहीं किया गया है।

Xcode ने बेहतर तरीके से और अलग किया है कि क्या साझा करने की आवश्यकता है और क्या स्थानीय स्तर पर रखा जाना चाहिए। उदाहरण के लिए; ये लाइनें डिफ़ॉल्ट बिल्ड योजनाओं को अनदेखा कर देंगी, जो ठीक है क्योंकि आप विशिष्ट बिल्ड योजनाओं को साझा के रूप में चिह्नित कर सकते हैं, और उन्हें एक निर्देशिका में रखा जाता है जिसे अनदेखा नहीं किया जाता है।

ब्रेकप्वाइंट को नजरअंदाज कर दिया जाता है, लेकिन आप विशिष्ट ब्रेकपॉइंट को परियोजनाओं में साझा किए जाने के रूप में चिह्नित कर सकते हैं और उन्हें एक निर्देशिका में भी रखा जाता है जिसे अनदेखा नहीं किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.