.classpath और .project - संस्करण नियंत्रण में जाँच करें या नहीं?


87

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

हमारे सभी डेवलपर्स ग्रहण का उपयोग नहीं करते हैं। फिर भी, हम नए लोगों को आरंभ करने में मदद करने के लिए .classpath और .project फ़ाइलों में बस जाँच करने पर विचार कर रहे हैं। यह एक अच्छा विचार है? या फिर उन फाइलों में लगातार संघर्ष होगा? क्या ग्रहण पर सेट करने के लिए परियोजना को आसान बनाने का एक वैकल्पिक तरीका है?


जवाबों:


65

निश्चित रूप से हाँ, जैसा कि मैंने कहा " क्या आप अपनी परियोजना फाइलों को संस्करण नियंत्रण में रखते हैं? "

"इसे लोड करो, इसे सेट करो, जाओ।"

लेकिन ... यह वास्तव में हाल के Eclipse3.5 सेटिंग्स के लिए ही सही है, जहाँ निर्माण पथ सापेक्ष पथों का समर्थन करते हैं :

निर्माण पथ सापेक्ष पथों का समर्थन करता है


और Eclipse3.6 बेहतर होगा, क्योंकि यह पथ चर के लिए सापेक्ष पथ का समर्थन करता है Linked Resources:

सापेक्ष पथ के साथ पथ चर
(3.6M5 से)


2
वाह, मुझे नहीं पता था कि उन्होंने इसे जोड़ा था ... हमें कुछ दुखों से बचाया होगा
उरी

ऐसा लगता है कि इस उत्तर से जुड़ी छवियां ऑफ-लाइन हैं।
vkraemer

1
@vkraemer: सच। मैंने अब उन दो चित्रों को पुनर्स्थापित कर दिया है, पहला संग्रह से आ रहा है ।eclipse.org/eclipse/ downloads/ drops/R - 3.5-200906111540/… और दूसरा डाउनलोड से डाउनलोड करें ।itemis.com/mirror - eclipse/R - 3.6 -201006080911 . /
VonC

17

निश्चित रूप से नहीं - यह आम तौर पर तोड़फोड़ के माध्यम से परियोजना फाइलों को वितरित करने के लिए भयानक विचार है। खासकर जब से कोई उन्हें कुछ अजीब तरीके से संशोधित कर सकता है। परियोजना के प्रलेखन में एक अच्छा पृष्ठ एक बेहतर विचार है। हमारी परियोजना में कई मॉड्यूल और एक जटिल सेटअप भी है। हमने एक संगम पृष्ठ की स्थापना की है, जिसमें बताया गया है कि प्रत्येक पॉप्यूलर IDE - IntelliJ, Eclipse, NetBeans पर परियोजना के साथ कैसे आरंभ किया जाए। तोड़फोड़ में एक README फ़ाइल में एक ही जानकारी है।


31
मैं सहमत नहीं हो सकता। मेरे अनुभव से यह संभव है कि चेकआउट को जितना संभव हो सके उतनी फ़ाइलों की जाँच करें। कोई उन्हें कुछ अजीब तरीके से बदल सकता है? कोई आपका कोड कुछ अजीब तरीके से बदल सकता है ...
Arne Deutsch

अर्ने, आपको वह उत्तर देना चाहिए, टिप्पणी नहीं।
amarillion

5
किसी भी IDE के लिए प्रोजेक्ट फ़ाइलें वास्तव में किसी भी प्रोजेक्ट का हिस्सा नहीं हैं - यदि आप उन्हें वितरित करना चाहते हैं - तोहेड जाओ - उन्हें उस लेख के साथ संलग्न करें जिसे आपने उल्लेख किया है। आम तौर पर एक टीम में सभी लोग रेपो में फ़ाइलों को संशोधित कर सकते हैं, लेकिन हर कोई महत्वपूर्ण प्रलेखन नोड्स के लिए नई फाइलें संलग्न नहीं कर सकता है, आदि किसी के लिए क्लासपैथ को अनदेखा करना और फाइलों को अनदेखा करना और जब वह नहीं होना चाहिए, तो उन्हें करना बहुत आसान है। यहां तक ​​कि अगर आप उन्हें तोड़फोड़ में रखते हैं - तो आपको निश्चित रूप से उन्हें कहीं ओर रखना चाहिए ...
बोहिदर बटसुव

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

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

10

मैं वोट नहीं करता हूं, लेकिन ऐसा इसलिए है क्योंकि मैं आमतौर पर इन फाइलों को मावेन से उत्पन्न करता हूं


एम 2 सबसे अधिक है लेकिन आपके लिए सब कुछ नहीं है
लियू

6

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

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

तो मेरे मैक पर यह काम करता है, और शायद मैक पर किसी के पास एक ही जेआरई है, लेकिन यह किसी और के लिए काम नहीं करेगा।

इसके अलावा, इसका कोई आसान तरीका नहीं है। ग्रहण हमेशा इसमें जोड़ देगा। मैं चाहता हूं कि .classpath फ़ाइल वहां हो, क्योंकि हमारे लिबास फ़ोल्डर में कुछ 3rd पार्टी JAR हैं जहाँ हम संस्करण बनाने की परवाह करते हैं, इसलिए हम उन्हें वहाँ छोड़ देते हैं ताकि नए डेवलपर्स को उन्हें प्राप्त न करना पड़े। । हम एक प्रबंधित प्रणाली में जा रहे हैं, लेकिन फिर भी + प्रबंधित अप्रबंधित निर्भरता की जाँच कर ली है। इसका मतलब है कि सभी डेवलपर्स को केवल यह सुनिश्चित करना है कि दो निर्देशिकाएँ अपने में हैं .classpath। लेकिन जब आप खींचते हैं तो हर बार अपना JRE ठीक करना बेहतर होता है और आपके द्वारा किए गए हर एक समय में .classpath में परिवर्तन होता है।

ग्रहण हालांकि आपके लिए कुछ अन्य अच्छी चीजें करता है। .Project फ़ाइल आमतौर पर उदाहरणों में समान होगी, इसलिए इसे शामिल करें। लेकिन ग्रहण के लिए स्रोत नियंत्रण के बारे में सबसे अच्छी बात यह है कि रन कॉन्फ़िगरेशन सेटिंग्स। रन कॉन्फ़िगरेशन डायलॉग में "कॉमन" टैब के तहत, डिबग और रन के लिए पसंदीदा सूचियों के तहत अपने सहयोगियों के लिए दिखाई देने वाले कॉन्फ़िगरेशन को सहेजें। मेरे लिए, .launchफ़ाइलों का एक समूह .settingsनिर्देशिका में जाता है, इसलिए हम सभी उनका उपयोग कर सकते हैं।

इसलिए मैं कहता हूं: .settingsलॉन्च कॉन्‍फ़िगर के लिए डायरेक्‍ट्री कंट्रोल में डायरेक्टरी जाती है (* .prefs को छोड़कर)

.classpath बाहर रहता है

.project में चला जाता है।


क्या JRE / JVM के लिए निष्पादन वातावरण का उपयोग करते समय भी ऐसा ही होता है?
Mr_and_Mrs_D

5

मैं नए उपयोगकर्ताओं के लिए जितना संभव हो उतना आसान बनाने के लिए इन फ़ाइलों की जाँच करेगा। सबसे अच्छा उपयोगकर्ता को परियोजना की जांच करनी चाहिए और अतिरिक्त ज्ञान के बिना इसे चलाने में सक्षम होना चाहिए। इस फाइल के लिए नियम प्रोजेक्ट की अन्य फाइलों की तरह ही हैं: उन्हें सावधानी से संभालें। आपको स्रोत कोड में निरपेक्ष पथ नहीं देना चाहिए, कॉन्फ़िगरेशन फ़ाइलों में आपको निगेट करना चाहिए।

यदि फाइलों को इस तरह से जांचा जाता है कि परियोजना खरोंच से चलती है, तो उन्हें बदलने के लिए अधिक बल नहीं होना चाहिए।


5

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

यदि फ़ाइलों में पूर्ण पथ और जैसे हैं, तो README एक बेहतर विकल्प होगा।


2

हां, उन्हें जरूर देखें, लेकिन सुनिश्चित करें कि आप किसी भी पथ निर्भरता का दस्तावेजीकरण करें और यदि संभव हो तो निरपेक्ष पथ से बचें।

यदि आप उन्हें चेक नहीं करते हैं, तो प्रोजेक्ट को चेक करने वाले किसी व्यक्ति को उन सभी सेटिंग्स को फिर से बनाना होगा, जो कष्टप्रद और संभावित त्रुटि प्रवण है।

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

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