Android स्टूडियो - पूरे .idea निर्देशिका को अनदेखा करना चाहिए?


137

मैंने AndroidStudio के लिए .gitignoreफ़ाइलों के लिए बहुत सारे उदाहरण देखे , कुछ उनमें हैं, और कुछ नहीं।.idea

क्या कोई अच्छा कारण नहीं है।

यदि इसे पूरी तरह से नजरअंदाज नहीं किया जाना चाहिए, तो क्या अंदर विशिष्ट फाइलें हैं। (जैसे कि .iml) जो कि .ignignore में होनी चाहिए?


मैं .ideaकुछ फाइलों को छोड़कर अनदेखा करता हूं .idea/runConfigurations/
डैनियल

जवाबों:


104

आप इस पृष्ठ पर एक नज़र डाल सकते हैं:

IntelliJ प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों के बारे में डॉक्टर

"निर्देशिका-आधारित प्रारूप" में, एक विशेष पंक्ति दिलचस्प है:

.Idea निर्देशिका में कॉन्फ़िगरेशन फ़ाइलों (.xml) का एक सेट होता है। प्रत्येक फ़ाइल एक निश्चित कार्य क्षेत्र है जो एक फ़ाइल का नाम में परिलक्षित होता है से संबंधित कॉन्फ़िगरेशन डेटा के केवल एक हिस्से में शामिल है, उदाहरण के लिए, compiler.xml, encodings.xml, modules.xml

लगभग सभी फ़ाइलों में प्रोजेक्ट के लिए सूचना कोर ही होती है, जैसे कि इसके घटक मॉड्यूल के नाम और स्थान, कंपाइलर सेटिंग्स, आदि। इस प्रकार, इन फ़ाइलों को संस्करण नियंत्रण में रखा जा सकता है (और चाहिए)।

हालांकि, मैं प्रोजेक्ट आईडीई-आश्रित बनाने के लिए ठीक से घृणा करता हूं (वर्तमान में मैं नेटबीन्स के साथ बनाई गई एक परियोजना पर काम कर रहा हूं और इसे एक्लिप्स के साथ उपयोग करने के लिए दर्द होता है जो मेरी कंपनी का मानक बन जाता है)।

तो, आपके प्रश्न का उत्तर देने के लिए:

  1. यदि आप निर्भरता के प्रबंधन और निर्माण के लिए मावेन या ग्रैडल जैसी किसी चीज का उपयोग नहीं करते हैं : निर्देशिका को संस्करण नियंत्रण में रखें । इस तरह, परियोजना और निर्भरता का सही विन्यास सभी के लिए उपलब्ध होगा। समकक्ष में, सभी डेवलपर्स को अपने वातावरण को ठीक उसी तरह सेट करना होगा जिस तरह से आप इसे कॉन्फ़िगर फ़ाइलों में परिभाषित करते हैं।
  2. यदि आप मावेन या ग्रैडल जैसे कुछ का उपयोग करते हैं : इन उपकरणों को सही ढंग से कॉन्फ़िगर करें और निर्देशिका को संस्करण नियंत्रण में न रखें । दरअसल, कॉन्फिग फाइल के अंदर मौजूद सारी जानकारी मावेन / ग्रैडल फाइल में स्टोर की जानी चाहिए । फिर अपने डेवलपर्स को उनके पर्यावरण के आधार पर अपनी IDE कॉन्फ़िगर करने दें। इस तरह, Eclipse, IntelliJ, Linux, Windows ... का उपयोग करना अब कोई समस्या नहीं होगी।

9
अगले पैराग्राफ पर ध्यान दें, हालांकि: "अपवाद फ़ाइल कार्यक्षेत्र। Xml है। यह आपकी व्यक्तिगत सेटिंग्स को संग्रहीत करता है ... इसलिए यह संभावना नहीं है कि आप इस फ़ाइल को अपने सहयोगियों के साथ साझा करना चाहते हैं।"
डालबेरिया

40

ठीक है, इसलिए कुछ "हां" और "नहीं" जवाब के बाद, मैं एक "हां और नहीं" उत्तर जोड़ रहा हूं :)

समस्या यह है कि .ideaदोनों प्रोजेक्ट बिल्ड कॉन्फ़िगरेशन (निर्भरता घोषणा) और प्रोजेक्ट सेटिंग्स (निरीक्षण, आदि) के लिए उपयोग किया जाता है।

आप निश्चित रूप से अपने आईडीई का उपयोग अपने बिल्ड कॉन्फ़िगरेशन के लिए नहीं करना चाहते हैं, लेकिन आप टीम के बीच सेटिंग्स साझा करना चाहते हैं। इसलिए आपको केवल .ideaसामग्री के एक भाग (जैसे librariesफ़ोल्डर और modules.xmlफ़ाइल) को अनदेखा करने की आवश्यकता है , लेकिन दूसरों को संस्करण नियंत्रण में रखें (उदाहरण के लिए)copyright , dictionariesऔर inspectionProfilesफ़ोल्डर और फ़ाइलों के तहत .ideaकी तरह dynamic.xml, codeStyleSettings.xml, आदि)।


कैसे विशेष रूप से iml फ़ाइलों को संबोधित करेंगे?
दिनांक

1
iml फ़ाइलों को निश्चित रूप से अनदेखा किया जाना चाहिए।
JBaruch

1
मैं अभी भी सोच रहा हूं कि कॉन्फ़िगरेशन को आईडीई-निर्भर फाइलों में नहीं रखा जाना चाहिए और इसलिए मेवेन / ग्रैडल ऐसा करने के लिए बेहतर है।
मिथ्रोप

@ बात यह है - आप मावेन / ग्रैडल फ़ाइल में इस प्रकार के विन्यास की घोषणा नहीं कर सकते। यह आइडिया का अपना स्वामित्व प्रारूप है और इसमें मावेन / ग्रैडल में पोर्टेबल विकल्प नहीं हैं।
जेरूच

अरे हाँ, तुम सही हो। वैसे भी, अगर इसे maven / gradle फ़ाइलों में नहीं रखा जा सकता है, तो अगली बार जब आप किसी अन्य IDE में प्रोजेक्ट को आयात करेंगे (जो कि मुझे वह समस्या है जिसे मैं संभालने से नफरत करता हूं) के साथ समस्या होगी। लेकिन मैं आपसे पूरी तरह सहमत हूं (यदि मेरा उत्तर पढ़ें, तो आप देखेंगे कि मैं वास्तव में हूँ): आप अपनी आवश्यकताओं के अनुसार फाइलों को शामिल करते हैं या नहीं :)
मिथ्रॉप

7

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

इसका कारण है कि मैं इसे "कॉन्सेप्ट" के साथ क्वालिफाई करता हूं क्योंकि जेटब्रेन्स '.idea फोल्डर के साथ कुछ समस्याएं थीं जिसके कारण हमें इसका उपयोग करने में सक्षम नहीं किया गया था। ये शायद ऐसे मुद्दे थे जिन्हें टाला या ठीक किया जा सकता था, लेकिन यह हमारे लिए स्पष्ट नहीं था कि इसे सही कैसे किया जाए, और हमें लगता है कि जेटब्रेन का दोष है क्योंकि डेवलपर्स के रूप में हमारे पास समय नहीं है और न ही बनाने के लिए समाधानों की खोज करने की इच्छा है। हमारा आईडीई सही ढंग से काम करता है।

कहा जा रहा है कि, मुद्दे निम्नलिखित थे:

  • प्रोजेक्ट फ़ोल्डर को सिमिलिंक करना सही काम नहीं करता है। जब मैंने अपनी परियोजनाएँ स्थापित कीं, तो मैंने उन्हें अपने घर की निर्देशिका में सम्‍मिलित किया। हमें पता चला कि यह परियोजना एक ठोस निर्देशिका की तरह व्यवहार करने के बजाए सटीक सिम्लिंक का उपयोग करने के लिए स्थापित की गई थी। इसका मतलब यह है कि यदि कोई अन्य डेवलपर अपने प्रोजेक्ट को अलग स्थान पर रखता है, या केवल सीमलिंक का उपयोग नहीं करता है, तो पूरी निर्देशिका प्रोजेक्ट नेविगेटर से गायब हो जाएगी क्योंकि यह वास्तव में सिमलिंक की तलाश में है। इससे भी बुरी बात यह है कि मुझे कॉन्फ़िगरेशन में यह पथ मान कभी नहीं मिला। हम अपने .idea फोल्डर को बनाने वाली फाइलों में सटीक कॉन्फिगर नहीं पा रहे थे।
  • परिभाषा फ़ाइलों को डिफ़ॉल्ट रूप से उपयोगकर्ताओं को विभाजित किया जाता है। इसका मतलब है कि अगर मैं अपने शब्दकोश में एक शब्द जोड़ना चाहता हूं, तो इसे मेरे लिए एक परिभाषा के रूप में सूचीबद्ध किया जाएगा, jgreathouse, लेकिन अन्य उपयोगकर्ताओं का अपना परिभाषा खंड होगा। ध्वजांकित शब्द अभी भी अन्य उपयोगकर्ताओं के लिए वर्तनी की गलती के रूप में दिखाई देंगे। यह वांछनीय नहीं है। इसका कारण मैं इसे अपनी परिभाषा फ़ाइल में जोड़ता हूं क्योंकि आईडीई गलत है। मैं चाहता हूं कि इन परिभाषाओं को अन्य उपयोगकर्ताओं के साथ सहज रूप से साझा किया जाए।
  • सहकर्मी कॉन्फ़िगरेशन को ओवरराइट करते रहे क्योंकि उनका IDE उनके कॉन्फ़िगरेशन के साथ वर्तमान में मेमरी में कॉन्फ़िगरेशन को ओवरराइट कर देगा। मेरा मतलब यह है कि, एक डेवलपर काम कर रहा होगा, और अपनी रिपॉजिटरी को मूल से मर्ज करेगा, जिसमें एक प्रोजेक्ट कॉन्फ़िगरेशन परिवर्तन होगा, बजाय उनके IDE बदलते कॉन्फ़िगरेशन, या यहां तक ​​कि उन्हें एक विकल्प देने के साथ, यह स्वचालित रूप से .id कॉन्फ़िगरेशन के साथ ओवरराइटिंग करेगा। उनके आईडीई के वर्तमान में स्मृति विन्यास। मेरी राय में यह .id कॉन्फ़िगरेशन को साझा कॉन्फ़िगरेशन के रूप में अनुपयोगी बनाता है। इसके चारों ओर काम करने के लिए, डेवलपर को सचमुच अपने IDE के उस उदाहरण को बंद करना होगा, रेपो को खींचना होगा और अपनी IDE को फिर से खोलना होगा। यह एक साझा विन्यास रखने के लिए कोई मतलब नहीं है अगर आईडीई तुरंत स्मृति में वर्तमान में कॉन्फ़िगरेशन के साथ इसे ओवरराइट करता है। यह

मैंने वीसी में विजुअल स्टूडियो और नेटबीन्स के साथ इस तरह के साझा आईडीई कॉन्फ़िगरेशन किए हैं और यह हमेशा ठीक था; लेकिन .id के साथ यह केवल अनुपयोगी लगता है जो निराशाजनक है। काश JetBrains इसके ऊपर मिलता और इसे एक बेहतर उपयोगकर्ता अनुभव बनाता।


> उनके आईडीई बदलते कॉन्फ़िगरेशन के बजाय, या यहां तक ​​कि उन्हें एक विकल्प देने के बावजूद, यह स्वचालित रूप से अपने आईडीई के वर्तमान-मेमोरी कॉन्फ़िगरेशन के साथ .idea कॉन्फ़िगरेशन को अधिलेखित कर देगा। वाह, यह वास्तव में दुर्भाग्यपूर्ण है। जानकार अच्छा लगा!
ग्रेग प्राइस 0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.