2008-12-03 10 views
230

कौन सा एक्लिप्स फाइल स्रोत स्रोतों के तहत स्रोत नियंत्रण के तहत उचित है?कौन सी ग्रहण फ़ाइलें संस्करण नियंत्रण के अंतर्गत हैं?

.metadata/*
परियोजना-निर्देशिका/.project
परियोजना-निर्देशिका/.classpath
परियोजना-निर्देशिका/.settings:

मेरी परियोजना में, विशेष रूप से, मैं के बारे में सोच रहा हूँ/*

यदि इनमें से कोई भी निर्भर करता है, तो कृपया अपने दिशानिर्देशों को समझाएं।

उत्तर

169

मेटाडेटा को स्रोत नियंत्रण में प्रबंधित नहीं किया जाना चाहिए। उनमें आपके वर्कस्पेस से संबंधित अधिकांश डेटा शामिल हैं।

एकमात्र अपवाद .launch एक्सएमएल फाइलें (लॉन्चर परिभाषा) है।

वे

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches 

में पाए जाते हैं और वे अपनी परियोजना निर्देशिका में नकल किया जाना चाहिए: जब अपनी परियोजना ताजा है, उन विन्यास "रन विन्यास" संवाद में प्रदर्शित किया जाएगा।

इस तरह, उन लॉन्च पैरामीटर फ़ाइलों को एससीएम में भी प्रबंधित किया जा सकता है।

(चेतावनी: विकल्प अचिह्नित करो "विन्यास को हटाएं जुड़े संसाधन हटा दिया गया है"भागो/शुभारंभ/लॉन्च विन्यास वरीयता पैनल में: यह आम है क्रम में एक परियोजना नरम हटाना इसे वापस फिर से आयात करने - ग्रहण मेटाडाटा की आवश्कता है मजबूर करने के लिए लेकिन इस विकल्प, अगर जाँच की, अपने विस्तृत लांच मापदंडों निकाल देंगे)

project-dir/.project 
project-dir/.classpath 
project-dir/.settings/* 

अपने एससीएम में होना चाहिए (विशेष रूप से .project।! और Eclipse documentation के अनुसार)।

लक्ष्य है कि किसी को चेकआउट कर सकते हैं/उसकी/उसके एससीएम कार्यक्षेत्र को अद्यतन करने और ग्रहण कार्यक्षेत्र में ग्रहण परियोजना आयात है।

के लिए, आप linked resources का उपयोग कर अपने .classpath में केवल संबंधित पथ उपयोग करने के लिए, चाहते हैं।

नोट: project-dir एक "बाहरी" प्रोजेक्ट निर्देशिका को संदर्भित करता है, न कि ग्रहण कार्यक्षेत्र के तहत बनाई गई निर्देशिका। इस तरह, दो धारणाएं (ग्रहण कार्यक्षेत्र बनाम एससीएम कार्यक्षेत्र) स्पष्ट रूप से अलग हैं।


ipsquiggle के रूप में टिप्पणी में उल्लेख है, और जैसा कि मैंने in an old answer का संकेत है, तो आप वास्तव में सीधे अपनी परियोजना निर्देशिका में के रूप में शुरू विन्यास साझा फ़ाइल बचा सकता है। सभी लॉन्चिंग कॉन्फ़िगरेशन को अन्य प्रोजेक्ट फ़ाइलों की तरह वर्जन किया जा सकता है।

(केडी से ब्लॉग पोस्ट को Tip: Creating and Sharing Launch Configurations से)

alt text

+16

ए (IMO) .launch फ़ाइलों के लिए .metadata में कुछ भी साथ काम करने में काफी बेहतर कार्य प्रवाह, यह है: जब आप एक लांच विन्यास को संपादित पर, 'सामान्य' टैब, 'साझा फ़ाइल> साझा फ़ाइल' चुनें। यह सीधे परियोजना फ़ोल्डर में इसे छोड़ देता है, इसलिए यह शेष परियोजना के साथ एससीएम किया जा सकता है। – Ipsquiggle

+0

@lpsquiggle: अच्छा बिंदु। मैंने संभावना को प्रतिबिंबित करने के लिए अपना उत्तर पूरा कर लिया है। – VonC

+2

एससीएम में प्रोजेक्ट क्यों होना चाहिए? उदाहरण के लिए, मैं एक कोड मेट्रिक्स उपकरण का उपयोग करना चाहता हूं जो सक्षम होने पर .project में परिवर्तन का कारण बनता है। मैं परियोजना के सभी उपयोगकर्ताओं पर इसे मजबूर नहीं करना चाहता हूं। – jfritz42

4

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

+3

नहीं, आप अपने .classpath में सापेक्ष पथ प्राप्त कर सकते हैं। Http://stackoverflow.com/questions/300328#300346 देखें। – VonC

+5

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

+1

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

14

मैं वर्तमान में एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां हमारे पास स्रोत नियंत्रण के तहत प्रोजेक्ट और .cproject फ़ाइलें हैं। विचार यह था कि लाइब्रेरी पथ और लिंक निर्देश से संबंधित सेटिंग्स टीम भर में प्रचारित होंगी।

प्रैक्टिस में यह बहुत अच्छी तरह से काम नहीं कर रहा है, विलय लगभग हमेशा एक विवादित राज्य में वापस आ जाता है जिसे ग्रहण के बाहर deconflicted की आवश्यकता होती है और फिर परियोजना को प्रभावी होने के लिए बंद कर दिया जाता है और फिर से खोल दिया जाता है।

मैं उन्हें स्रोत नियंत्रण में रखने की अनुशंसा नहीं करता।

7

कुछ परियोजनाएं, जैसे मेवेन का उपयोग करने वाले, पीओएम पर आधारित प्रोजेक्ट फ़ाइलों को उत्पन्न करना चाहते हैं।

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

केवल मुश्किल हिस्सा यह सुनिश्चित कर रहा है कि वे सभी सिंक में रहें। लेकिन ज्यादातर मामलों में आप प्रोजेक्ट से परियोजना में .settings फ़ाइलों की प्रतिलिपि बना सकते हैं। यदि कोई ऐसा है जो आप विशेष रूप से स्रोत नियंत्रण में नहीं चाहते हैं, तो svn सेटिंग के बराबर करें: उनके लिए अनदेखा करें, यदि आपका एससीएम इसका समर्थन करता है।

+2

हम मेवेन 1 और 2 का उपयोग करते हैं, और यदि आप इसे पूछते हैं तो यह केवल प्रोजेक्ट फ़ाइल उत्पन्न करता है। और यदि आप ऐसा करते हैं, तो यह पीओएम की सामग्री के आधार पर भी ऐसा करता है, इसलिए यदि कोई अन्य डेवलपर पहले से ही आपके लिए यह कदम उठा चुका है और परिणाम को संस्करण नियंत्रण में चेक किया है, तो इसका लाभ क्यों न लें? –

11

यह कुछ भी मूल्यवान नहीं है कि CDT कॉन्फ़िगरेशन फ़ाइलें स्रोत-नियंत्रण-अनुकूल नहीं हैं। .cproject फ़ाइलों के लिए बहुत बार बदलते हुए और विवाद पैदा करने के लिए दायर एक बग है, Sharing cdt-project files in repository always causes conflicts देखें।

+0

यिक्स - यह बग छह साल पुराना है और अभी भी छुआ नहीं है। ग्रहण टीम के लिए स्पष्ट रूप से स्रोत नियंत्रण समर्थन प्राथमिकता नहीं है! – BrainSlugs83

+1

यह भी ध्यान दिया जाना चाहिए कि .cproject फ़ाइल में कॉन्फ़िगरेशन जानकारी होती है जो आप अन्य डेवलपर्स को मैन्युअल रूप से पुनर्निर्मित करने के लिए मजबूर नहीं करेंगे। ओह। –

6

.classpath फ़ाइल निश्चित रूप से एसएमएम की जांच के लिए एक अच्छा उम्मीदवार है क्योंकि इसे हाथ से स्थापित करना बहुत काम हो सकता है और परियोजना में नए देवताओं के लिए मुश्किल हो जाएगी। यह सच है कि इसे अन्य स्रोतों से उत्पन्न किया जा सकता है, इस मामले में आप दूसरे स्रोत में जांच करेंगे।

.settings के लिए, यह सेटिंग्स पर निर्भर करता है। यह एक भूरा क्षेत्र है, लेकिन कुछ सेटिंग्स लगभग अनिवार्य हैं और यह एक परियोजना की जांच करने में सक्षम है, इसे ग्रहण में आयात करने में सक्षम है और सबकुछ स्थापित है और जाने के लिए अच्छा है।

हमारी परियोजना में, इसलिए हम सीवीएस.सेटिंग नामक .settings फ़ोल्डर की एक प्रति बनाए रखते हैं और हमारे पास .settings पर प्रतिलिपि बनाने के लिए एक चींटी कार्य है। जब आप सीवीएस से प्रोजेक्ट प्राप्त करते हैं, तो आप डिफ़ॉल्ट सेटिंग्स को नए .settings फ़ोल्डर में कॉपी करने के लिए 'eclipsify' चींटी कार्य को कॉल करते हैं। जब आप प्रोजेक्ट पर विकसित होने वाले सभी लोगों द्वारा आवश्यक सेटिंग्स कॉन्फ़िगर करते हैं, तो आप उन्हें वापस CVS.settings फ़ोल्डर में विलय करते हैं और उसे सीवीएस पर प्रतिबद्ध करते हैं। इस तरह एससीएम में सेटिंग्स को सहेजना एक सचेत प्रक्रिया बन जाता है। देवताओं को समय-समय पर उन सेटिंग्स को अपने .settings फ़ोल्डरों में विलय करने की आवश्यकता होती है जब बड़े बदलावों की जांच की जाती है। लेकिन यह एक साधारण प्रणाली है जो आश्चर्यजनक रूप से अच्छी तरह से काम करती है।

2

पर विचार करें:

.classpath 
.project 
.launch 

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

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

+0

मेरे अनुभव में जब आप ग्रहण को किसी नए संस्करण में अपडेट करते हैं, या स्वाद के बीच स्विच करते हैं तो यह विभिन्न तरीकों से तोड़ने लगता है। –

0

मैंने नए सहयोगियों (और स्वयं) के लिए ग्रहण कार्यक्षेत्र सेटिंग्स को कॉन्फ़िगर करने में बहुत अधिक घंटे बिताए हैं। अंततः मैं जो कर रहा हूं वह नई डेवलपर मशीन पर अपना खुद का। मेटाडेटा कॉपी कर रहा था।

आप एक टीम पर काम कर रहे हैं, तो मुझे लगता है कि निम्न संस्करण नियंत्रण में रखने के बहुत अच्छा उम्मीदवार हैं:

  • स्थापित JREs और उनके नाम
  • सर्वर रनटाइम वातावरण
  • जावा संपादक टेम्पलेट्स
  • संस्करण नियंत्रण कीबोर्ड शॉर्टकट्स
  • प्लगइन सेटिंग्स जो परियोजना विशिष्ट सेटिंग्स प्रदान नहीं करती
  • Maven सेटिंग्स
  • Preconfigured परिप्रेक्ष्य
  • ...
संबंधित मुद्दे