2010-11-25 9 views
36

हमारे पास एक ग्रहण आरसीपी अनुप्रयोग के लिए एक ग्रहण कार्यक्षेत्र में कोड है जिसमें एकाधिक जावा प्रोजेक्ट हैं। हम Mercurial का उपयोग एक साधारण के साथ कर रहे हैं। Hgignore बस * .class (लेकिन एक ही मुद्दा गिट से संबंधित होगा)।ग्रहण परियोजना का क्या। मेटाडेटा क्या मैं गिट/मर्कुरियल में सुरक्षित रूप से अनदेखा कर सकता हूं?

कोड में भी एक छोटा सा परिवर्तन परिणामस्वरूप कई फाइलें हो सकती हैं। मेटाडेटा बदल रही है।

मैं संस्करण नियंत्रण से कुछ या सभी .metadata को बाहर करना चाहता हूं। अगर हम इसे पूरी तरह से बाहर कर देते हैं, तो कार्यक्षेत्र खो जाता है।

क्या कोई जानता है कि हम सुरक्षित रूप से क्या बाहर कर सकते हैं? वैकल्पिक रूप से, अगर हम कोड को ताजा कंप्यूटर पर खींचते हैं तो हम इसे फिर से कैसे बना सकते हैं?

+0

क्या मुझे यह समझने के लिए दिया गया है कि आप एक पूरे Mercurial भंडार में पूरे ग्रहण कार्यक्षेत्र को संग्रहीत कर रहे हैं? क्या आपने प्रत्येक प्रोजेक्ट को एक रिपॉजिटरी में संग्रहीत करने पर विचार किया है, फिर उन्हें छतरी भंडार के उप-स्रोतों के रूप में समूहीकृत करना है ताकि आप उन्हें एक साथ संस्करण कर सकें (हालांकि मुझे नहीं पता कि ग्रहण के लिए इसका कोई समर्थन है या नहीं)? –

+0

यह एक प्लगइन आधारित उत्पाद है, और अलग-अलग परियोजनाएं प्रत्येक प्लगइन को परिभाषित करती हैं। सभी को एक साथ या समग्र उत्पाद की आवश्यकता है। इसलिए व्यक्तिगत परियोजनाएं पूरी तरह से पूरी तरह से हिस्सा हैं, यही कारण है कि हम पूरे ग्रहण कार्यक्षेत्र को एक ही भंडार में स्टोर करना चाहते हैं। –

उत्तर

15

फ़ाइलें मैं के व्यक्तिगत रूप से जागरूक कर रहा हूँ कर रहे हैं:

  • version.ini (बहुत ही रोमांचक नहीं)
  • .plugins/org.eclipse.jdt.core/variablesAndContainers.dat (classpath चर)
  • .plugins/org.eclipse.core.resources/.projects/* /। स्थान (कार्यक्षेत्र में परियोजनाओं)

कहीं, मैं यह बहुत है कुछ ग्रहण से संबंधित उपकरणों के परीक्षण के लिए इस्तेमाल किया एक ग्रहण कार्यक्षेत्र है गंभीर रूप से कटौती, बी काम करता है मैं देखूंगा कि मैं इसे खोद सकता हूं या नहीं।

+1

धन्यवाद! बस काम करने के बारे में। मुझे भी .metadata \ .plugins \ org.eclipse.core.resources \ .root और .safetable रखना था। –

+0

मुझे .metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat भी जोड़ना पड़ा। –

4

वर्कस्पेस मेटाडाटा वास्तव में स्रोत नियंत्रण में नहीं रखा जाना चाहिए। मूल वर्कस्पेस कॉन्फ़िगरेशन को team project set के माध्यम से साझा किया जा सकता है।

+0

धन्यवाद - आशाजनक लग रहा है। मैं कोशिश करूँगा। –

+0

एक प्रोजेक्ट सेट फ़ाइल में कौन सी परियोजनाओं की जांच की जानी चाहिए, और कहां से, लेकिन कुछ भी नहीं। ऐसा नहीं है कि मैं आपके साथ असहमत हूं - मुझे लगता है कि काम करने का सबसे बुद्धिमान तरीका कोड और प्रति-परियोजना मेटाडेटा में जांचना है, और कार्यस्थान को स्थानीय नियंत्रण में छोड़ना है - लेकिन यदि ओपी कार्यक्षेत्र कॉन्फ़िगरेशन साझा करने पर जोर देता है, तो शायद वह एक पीएसएफ से अधिक की जरूरत है। –

+0

टॉम सही है; वह मेरे लिए काम नहीं किया। पीएसएफ में संदर्भ (एक गलत कॉन्फ़िगर किया गया और अस्तित्वहीन) सीवीएस भंडार है, जिसमें मैं निश्चित रूप से कनेक्ट नहीं कर सकता। –

4

मैं नियमित रूप से रखता हूं। प्रोजेक्ट और .classpath, न केवल वे गिट के लिए सुरक्षित हैं बल्कि उपयोगी हैं।

.class और .settings मेरे gitignore में हैं। वे क्रमशः उत्पन्न होते हैं और व्यक्ति विशिष्ट होते हैं।

+1

ऐसा लगता है कि आप इस कथन से ठीक कह रहे हैं, लेकिन मैं (, अब तक कम से कम), क्यों GitHub ग्रहण फ़ाइल को अनदेखा अभी भी .project होता है और .classpath – lanoxx

+0

GitHub ग्रहण उपेक्षा .project शामिल नहीं है केवल .cproject। –

50

GitHub एक समुदाय "gitignore" परियोजना है कि कैटलॉग विभिन्न प्लेटफार्मों, संपादकों और भाषाओं के लिए ध्यान न दी के लिए सुझाव दिया filespecs को बनाए रखने की है: https://github.com/github/gitignore

ग्रहण ध्यान न दी यहां हैं: https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

(देखते हैं, तो अन्य filespecs है कि वे के बारे में पता होना चाहिए, उन्हें पता है!)

+6

एक उत्कृष्ट परियोजना! उस विशेष अनदेखी सूची में दो मुद्दे हैं, हालांकि: एक यह है कि यह उन चीज़ों को अनदेखा करता है जिन्हें आप निश्चित रूप से देखना चाहते हैं, जैसे .classpath, और दूसरा यह है कि यह परियोजना निर्देशिकाओं के अंदर चीजों के बारे में है, जबकि ओपी एक में जांचना चाहता है पूरे कार्यक्षेत्र। यदि आपने उस सूची को वर्कस्पेस पर लागू किया है, तो यह (मुझे लगता है) पूरे .metadata निर्देशिका को अनदेखा करेगा, जो परियोजना की तरह कुछ महत्वपूर्ण चीजें खो देगा। स्थान फ़ाइलें। असल में, यद्यपि, यहां समस्या ग्रहण है, जो आधिकारिक और व्युत्पन्न फ़ाइलों को एक बहुत ही असहनीय तरीके से मिश्रित करती है। –

29

मेटाडाटा और कार्यस्थान

मैं wou ld कभी भी .metadata फ़ोल्डर साझा न करें। असल में जब तक कि आपके पास कोई विशेष कारण न हो, मैं वर्कस्पेस फ़ोल्डर को भी साझा नहीं करूंगा बल्कि इसके बजाय प्रत्येक प्रोजेक्ट को गिट के साथ अलग-अलग साझा करता हूं। इस तरह .metadata फ़ोल्डर हमेशा अपना Git भंडार के पैरेंट फ़ोल्डर में होगा और आप के बारे में है कि क्या आप वैसे भी इसे अनदेखा करने की जरूरत है बारे में सोचना है न:

|-- workspace/ 
| \-- .metadata/ 
| |-- yourProjectOne/ 
| | \-- .git/ 
| | |-- .project 
| | |-- src/ 
| | |-- ... 
| |-- yourProjectTwo/ 
| | \-- .git/ 
| | |-- .project/ 
| | |-- src/ 
| | |-- ... 

परियोजना विशिष्ट

आप चाहिए शायद हमेशा .project फ़ाइल साझा करें और कभी भी .settings/ फ़ाइलें साझा करें। .classpath आपके पर्यावरण पर निर्भर हो सकता है लेकिन मैं इसे साझा करने का सुझाव नहीं दूंगा, क्योंकि यह विवाद पैदा कर सकता है (उदाहरण के लिए यदि कोई उपयोगकर्ता ओपनजेडके का उपयोग करता है और दूसरा सूर्य-जेडीके का उपयोग करता है।.settings में ग्रहण के लिए प्राथमिकताएं और सेटिंग्स शामिल हैं और बहुत कुछ बदलती है, इस प्रकार इसे साझा नहीं किया जाना चाहिए। अगर आप इसे गिट से क्लोन करने के बाद प्रोजेक्ट को सही तरीके से आयात करते हैं तो आपको कोई समस्या नहीं होगी।

eclipse documentation राज्यों .project फाइल के बारे में निम्नलिखित:

इस फ़ाइल का उद्देश्य परियोजना स्वयं का वर्णन है, तो कि एक परियोजना है कि अप ज़िप किया गया है या एक सर्वर के लिए जारी किया गया है हो सकता है बनाने के लिए है सही ढंग से किसी अन्य कार्यक्षेत्र में पुनर्निर्मित।

और:

एक नई परियोजना एक स्थान है कि एक मौजूदा परियोजना विवरण फ़ाइल में बनाया गया है तो यह है कि वर्णन फ़ाइल की सामग्री परियोजना विवरण के रूप में सम्मानित किया जा होगा। एक अपवाद यह है कि फ़ाइल में प्रोजेक्ट नाम को अनदेखा कर दिया जाएगा यदि यह प्रोजेक्ट के नाम से मेल नहीं खाता है। यदि डिस्क पर वर्णन फ़ाइल अमान्य है, तो प्रोजेक्ट निर्माण विफल हो जाएगा।

मैं भी Maven का उपयोग करने के रूप में इस आप निर्भरता प्रबंधन के साथ समस्याओं का एक बहुत बचत होगी सुझाव है और .classpath

Maven

एक Maven परियोजना के साथ मुख्य अंतर यह है आप कर सकते हैं वह यह है कि परियोजना को मेवेन -> "मौजूदा मेवेन प्रोजेक्ट्स" के रूप में आयात करें और इस प्रकार केवल गिट में pom.xml और .project फ़ाइल साझा करने की आवश्यकता है। ग्रहण तब आपके लिए .classpath, .settings/ फ़ाइलों को स्वचालित रूप से बनाएगा। इस प्रकार स्पष्ट रूप से आपको उन्हें साझा करने की आवश्यकता नहीं है। अगर pom.xml में कुछ बदलता है तो आप बस मेवेन -> "प्रोजेक्ट कॉन्फ़िगरेशन अपडेट करें" और मैवेन -> "निर्भरता अपडेट करें" चलाएं।

Maven

आप बिना.project फ़ाइल और नहीं .settings/ फ़ोल्डर को साझा करना चाहिए। आप क्लासपाथ को साझा करने के लिए समझ सकते हैं लेकिन इससे ऊपर बताए गए संघर्षों का कारण बन सकता है। मैं सुझाव दूंगा कि इसे साझा न करें। -> "मौजूदा परियोजना कार्यस्थान से" ग्रहण .project फ़ाइल का सम्मान लेकिन .classpath और .settings/ फ़ाइलों का पुनर्निर्माण होगा

के बाद आप Git भंडार आप बस आयात का उपयोग कर सकते क्लोन है परियोजना आयात करने के लिए नीचे दी गई विधि का प्रयोग करें। आयात के बाद आपको ग्रहण से हाथ से क्लासपाथ को कॉन्फ़िगर करने की आवश्यकता होगी (और जब भी आपकी टीम किसी अन्य लाइब्रेरी का उपयोग करना चाहती है)।

यदि आप .project फ़ाइल साझा नहीं करते हैं, तो ग्रहण के साथ प्रोजेक्ट आयात करना संभव नहीं है। आपको पहले प्रोजेक्ट विज़ार्ड के साथ एक नई परियोजना बनाने की आवश्यकता होगी, और फिर आप "सामान्य-> फ़ाइल सिस्टम" आयात का चयन कर सकते हैं, यह सभी फ़ाइलों को आपके कार्यक्षेत्र में कॉपी करेगा। शायद यह नहीं है कि आप क्या चाहते हैं, क्योंकि इसका मतलब है कि आप कार्यक्षेत्र में गिट भंडार को क्लोन नहीं कर सकते हैं, आपको इसे कहीं और क्लोन करना होगा और फिर इसे वहां से आयात करना होगा। इसलिए आपको हमेशा .project फ़ाइल साझा करना चाहिए।

अगर आपको इस स्पष्टीकरण के लिए सुझाव हैं या आप इससे सहमत नहीं हैं तो कृपया एक प्रशंसा छोड़ दें। मुझे आशा है कि यह एक या दूसरे की मदद करेगा।

+0

मैवेन और एम 2 के साथ, क्या यह प्रोजेक्ट साझा करना भी आवश्यक है? – pioto

+1

बहुत उपयोगी निर्देश। मैं उलझन में था क्यों सभी gitignore फ़ाइल शामिल हैं। प्रोजेक्ट। लेकिन आपके निर्देश के बाद, मैं साझा करने का फैसला करता हूं। प्रोजेक्ट। – einverne

संबंधित मुद्दे

 संबंधित मुद्दे